【问题标题】:How to read XML Nodes in XML using c#.net如何使用 c#.net 在 XML 中读取 XML 节点
【发布时间】:2010-06-01 06:42:30
【问题描述】:

我有一个如下的 XML 文件:

<report timestamp="3201" reportVersion="2" request="3981135340">
<question timedOut="false" time="3163" attempts="2" correct="true" id="13"> 
<answer status="attempt"> 
<radioButton correct="false" value="true" id="17" /> 
</answer> 
<answer status="correct"> 
<radioButton correct="true" value="true" id="15" /> 
</answer> 
</question> 
</report>

我想根据 'answer' 节点的 'status' 属性读取子节点。

【问题讨论】:

    标签: c# asp.net xml


    【解决方案1】:

    使用XmlReader(最快但仅转发)、XDocument(LINQ to XML)或XmlDocument。请参阅 msdn 文档中的示例。

    【讨论】:

      【解决方案2】:

      使用 LINQ to XML:

      using System.Xml.Linq;
      
      var doc = XDocument.Parse(xml); // or XDocument.Load()
      var elements = from e in doc.Descendants("answer")
                     where e.Attribute("status").Value == "attempt"
                     select e;
      
      // elements will be IEnumerable<XElement>
      

      【讨论】:

        【解决方案3】:

        使用 XmlDocument 和 XPath:

        XmlDocument document = new XmlDocument();
        //here you should load your xml for example with document.Load();
        XmlNodeList nodes = document.SelectNodes("/report/question/answer[@status = 'correct']/radioButton");
        

        只需根据您的需要修改 XPath。

        【讨论】:

          【解决方案4】:

          试试这个..

          foreach (XmlNode xnode in xdoc.SelectNodes("report/question/answer"))
              {
                  if (xnode.Attributes.GetNamedItem("status").Value == "correct")
                  {
                      string value = xdoc.SelectSingleNode("report/question/answer[@status='correct']/radioButton").Attributes.GetNamedItem("id").Value;
          
                  }
                  if (xnode.Attributes.GetNamedItem("status").Value == "attempt")
                  {
                      string value = xdoc.SelectSingleNode("report/question/answer[@status='attempt']/radioButton").Attributes.GetNamedItem("id").Value;
                  }
              }
          

          【讨论】:

            猜你喜欢
            • 2016-05-06
            • 2012-08-28
            • 1970-01-01
            • 1970-01-01
            • 2020-01-13
            • 1970-01-01
            • 2016-12-21
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多