请问这个XML怎么读取,感觉好奇怪

yux007 2004-10-29 10:50:58
<?xml version="1.0" encoding="utf-8" ?>
<Entity name="A" keytype="B">
<table name="Person">
<columns name="Columns">
<Column Name="PersonID" AttrName="ID" />
<Column Name="ParentID" AttrName="FuID" />
</columns>
现在要读取AttrName,比如str1 = "ID", str2 = "FuID"
要是直接columns我会读,前面加上了table和Entity就不会了。
...全文
234 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
BearRui 2004-10-31
  • 打赏
  • 举报
回复
XmlNodeList nodes=doc.SelectNodes("//Column");
foreach(XmlNode node in nodes)
Console.WriteLine(node.Attributes["AttrName"].Value.ToString());
-----------------------------
这个就是循环显示AttrName里面的全部内容啊
yux007 2004-10-31
  • 打赏
  • 举报
回复
to BearRui(孤熊 | 爱情!它把我给忘了!):
现在并不知道AttrName里面的内容,就是要把它的每一项都读出来,分别付给一个字符串型的变量,所以上面的方法不可行
yux007 2004-10-31
  • 打赏
  • 举报
回复
搞定了,谢谢大家
yux007 2004-10-31
  • 打赏
  • 举报
回复
最好是一一对应的关系,比如PersonID对应的AttrName是"ID",也就是说根据Name找到对应的AttrName,该怎么做呢?
yux007 2004-10-31
  • 打赏
  • 举报
回复
呵呵,这样是读出来了,可是还要分别付给一个字符串型的变量,所以这样不行,能不能把XML读到一个哈希表里面,ht[0][1],ht[1][1]...?
BearRui 2004-10-29
  • 打赏
  • 举报
回复
在static void Main函数中是不能调用外部的变量的。

把XmlDocument m_xmlDocument = new XmlDocument();放在mian函数中:

XmlDocument m_xmlDocument = new XmlDocument();
m_xmlDocument.Load(@"D:\code\C#\OperateXML\OperateX");
XmlNodeList nodes=m_xmlDocument.SelectNodes("//Column");
foreach(XmlNode node in nodes)
Console.WriteLine(node.Attributes["AttrName"].Value.ToString());
yux007 2004-10-29
  • 打赏
  • 举报
回复
没错误了,但是读不出来
yux007 2004-10-29
  • 打赏
  • 举报
回复
我按照你说的改了,还是那个错误提示啊
BearRui 2004-10-29
  • 打赏
  • 举报
回复
我不是说改了下面这个吗,楼主没看到啊:

XmlNodeList nodes=m_xmlDocument.SelectNodes("//Column");

是//不是/。

再加上楼上说的,
kinzey 2004-10-29
  • 打赏
  • 举报
回复
补充:
Console.WriteLine(node.Attributes["AttrName"].Value.ToString());
yux007 2004-10-29
  • 打赏
  • 举报
回复
to lyhold(让你飞):
能不能给出代码来,我是新手学习一下,谢谢
yux007 2004-10-29
  • 打赏
  • 举报
回复
怎么会有这个提示呢:'OperateXML.Class1.m_xmlDocument' denotes a 'field' where a 'class' was expected

namespace OperateXML
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
/// <summary>
/// The main entry point for the application.
/// </summary>
///
public XmlDocument m_xmlDocument = new XmlDocument();

[STAThread]
static void Main(string[] args)
{
//
// TODO: Add code to start application here
//
m_xmlDocument.Load(@"D:\code\C#\OperateXML\OperateX");
XmlNodeList nodes=m_xmlDocument.SelectNodes("/Column");
foreach(XmlNode node in nodes)
{
Console.WriteLine(node.Attributes["AttrName"]);
}

}
}
}
谢谢
lyhold 2004-10-29
  • 打赏
  • 举报
回复
用xpath的navigator就可以啊
主要是path要写对。
BearRui 2004-10-29
  • 打赏
  • 举报
回复
不好意思,上面有的地方写错了,应该是:

XmlNodeList nodes=doc.SelectNodes("//Column");
BearRui 2004-10-29
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="utf-8" ?>
<Entity name="A" keytype="B">
<table name="Person">
<columns name="Columns">
<Column Name="PersonID" AttrName="ID" />
<Column Name="ParentID" AttrName="FuID" />
</columns>
</table>
</Entity>
------------------------
try:

XmlDocument doc=new XmlDocument();
doc.Load("xmlfile");

XmlNodeList nodes=doc.SelectNodes("/Column");
foreach(XmlNode node in nodes)
Console.WriteLine(node.Attributes["AttrName"]);

----------------
上面代码没测试
yux007 2004-10-29
  • 打赏
  • 举报
回复
没人会吗?
yux007 2004-10-29
  • 打赏
  • 举报
回复
顶上来
BearRui 2004-10-29
  • 打赏
  • 举报
回复
读其中一个比如str1 = "ID",怎么做呢?
----------------------------------------
try:

XmlNode node=m_xmlDocument.SelectNodes("//Column[@AttrName='ID']");
Console.WriteLine(node.Attributes["AttrName"].Value.ToString());

toxyboy 2004-10-29
  • 打赏
  • 举报
回复
gz,备用!
yux007 2004-10-29
  • 打赏
  • 举报
回复
还有没有其他的方法?这样的话一个一个去判断太麻烦了
加载更多回复(3)

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧