2010-06-01 65 views
3

在XML XML节点我有一个XML文件,如下图所示:如何读取使用C#.NET

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

我想根据“答案”节点的“状态”属性来读取子节点。

+0

你的XML文件丢失:) – tpeczek 2010-06-01 06:47:47

+0

已经固定的:) – 2010-06-01 06:48:21

回答

1

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

使用的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您的需求。

0

试试这个..

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