[英]How to read XML Nodes in XML using c#.net
I have a XML file like below: 我有一个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>
I want to read the child nodes based on 'status' attribute of 'answer' node. 我想根据'answer'节点的'status'属性读取子节点。
Use XmlReader (fastest but forward only), XDocument (LINQ to XML) or XmlDocument . 使用XmlReader (最快但仅向前), XDocument (LINQ to XML)或XmlDocument 。 See the examples in the msdn documentation.
请参阅msdn文档中的示例。
Using LINQ to XML: 使用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>
Use XmlDocument and XPath: 使用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");
Just modify the XPath to your needs. 只需根据需要修改XPath即可。
try this one.. 试试这个......
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.