簡體   English   中英

如何使用c#.net讀取XML中的XML節點

[英]How to read XML Nodes in XML using c#.net

我有一個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'屬性讀取子節點。

使用XmlReader (最快但僅向前), XDocument (LINQ to XML)或XmlDocument 請參閱msdn文檔中的示例。

使用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>

使用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即可。

試試這個......

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;
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM