日期:2014-05-18  浏览次数:21103 次

怎么获取XML节点的属性
我有一个XML文件是这样的,我想要获取functions下面的所有子节点,然后读取name属性
XML code

<?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>



代码是这样的
C# code

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这个属性呢?


------解决方案--------------------
n.Attributes["name"].Value
------解决方案--------------------
n.Attributes["name"].Value 
正确 
我们都是用jquery的 不然XML在其他浏览器上会存在兼容性问题的 后面很麻烦的

jquery例子:

 var xmlRoot = $(xmlNode).find('NewDataSet').children('Table');

直接去找节点 find属性
------解决方案--------------------
GetAttribute("name")
------解决方案--------------------
探讨

n.Attributes["name"].Value

------解决方案--------------------
GetAttribute("name")正解