我有一个XML文件是这样的,我想要获取functions下面的所有子节点,然后读取name属性<?xml version="1.0" encoding="UTF-8"?>
<protocal>
<name>P1PPP</name>
<version>1</version>
<functions>
<function name="readRTData">
<funcID>1</funcID>
<start>1</start>
<end>20</end>
</function>
<function name="readVerifyData">
<funcID>2</funcID>
<start>21</start>
<end>40</end>
</function>
<function name="writeCtrlData">
<funcID>3</funcID>
<start>41</start>
<end>60</end>
</function>
</functions>
<registers>
<register name="uvol_fr ">
<addr>0</addr>
<type>0</type>
<property>1</property>
</register>
<register name="uvol_total_p">
<addr>2</addr>
<type>0</type>
<property>1</property>
</register>
</registers>
</protocal>
代码是这样的XmlNode xmllist = XMLHelper.GetXmlNodeByXpath(filename, "/protocal/functions");
foreach (XmlNode n in xmllist.ChildNodes)
{
Debug.WriteLine(n.Attributes["name"]);
foreach (XmlNode x in n.ChildNodes)
Debug.WriteLine(x.Name + " " + x.InnerText);
}为什么Debug.WriteLine(n.Attributes["name"]);这个不能读出name这个属性呢?
<protocal>
<name>P1PPP</name>
<version>1</version>
<functions>
<function name="readRTData">
<funcID>1</funcID>
<start>1</start>
<end>20</end>
</function>
<function name="readVerifyData">
<funcID>2</funcID>
<start>21</start>
<end>40</end>
</function>
<function name="writeCtrlData">
<funcID>3</funcID>
<start>41</start>
<end>60</end>
</function>
</functions>
<registers>
<register name="uvol_fr ">
<addr>0</addr>
<type>0</type>
<property>1</property>
</register>
<register name="uvol_total_p">
<addr>2</addr>
<type>0</type>
<property>1</property>
</register>
</registers>
</protocal>
代码是这样的XmlNode xmllist = XMLHelper.GetXmlNodeByXpath(filename, "/protocal/functions");
foreach (XmlNode n in xmllist.ChildNodes)
{
Debug.WriteLine(n.Attributes["name"]);
foreach (XmlNode x in n.ChildNodes)
Debug.WriteLine(x.Name + " " + x.InnerText);
}为什么Debug.WriteLine(n.Attributes["name"]);这个不能读出name这个属性呢?
正确
我们都是用jquery的 不然XML在其他浏览器上会存在兼容性问题的 后面很麻烦的jquery例子: var xmlRoot = $(xmlNode).find('NewDataSet').children('Table');直接去找节点 find属性