您好我是XML和.NET的新手。我想知道如何解析以下文件。我希望能够根据我将提供的ID获取XmlNode。例如:
<Data>
<Question id="1">
<Answer>ddd</Answer>
</Question>
</Data>
我想以某种方式这样做:
XmlDocument myDoc = new XmlDocument();
XmlElement myElem = myDoc.GetElementById("1");
Response.Write("Answer: "+myElem.ChildNodes[0].InnerXML);
这应该给我输出:“答案:ddd”。
非常感谢任何帮助,谢谢。
另外我不想使用LINQ,因为我想先掌握.NET的XML组件。
答案 0 :(得分:3)
没有汇编就注意它:
XmlNode node = myDoc.SelectSingleNode(“Data / Question [@ id ='1'] / Answer”); Response.Write(“答案:”+ node.InnerText);
当然,如果你想要变量,那么将1改为参数是理想的。
答案 1 :(得分:2)
伪代码:myDoc.selectSingleNode(“//问题[@ id = whatever]”)(顶一下)
答案 2 :(得分:2)
在LINQ之前,我会使用带有XPath查询的SelectSingleNode。在上面的示例中,XPath类似于"//Question[@id=1]/Answer"
。现在,我使用LINQ,因为至少我理解它,你不必使用XmlDocument对象就节省了开销。通过使用XElement并使用LINQ to XML扩展方法来查询所需的节点,您可以在一行或两行代码中执行整个操作,并且它将表现得更好或更好。
这是LINQ中使用xml片段的一个示例,它甚至不需要实例化对象来使用xml:
string xml = "<Data><Question id=\"1\"><Answer>ddd</Answer></Question></Data>";
string answer = XElement.Parse(xml).Descendants("Question").
Where(node => node.Attribute("id").Value == "1").
Descendants("Answer").ElementAt(0).Value;
答案 3 :(得分:1)
.Net的XML组件是一个废话。请不要让自己接受它,只需要LINQ to XML。从各方面考虑,使用起来更快,运行速度更快。
答案 4 :(得分:0)
我认为那些指向Linq并远离XML组件的人是正确的。您可能希望学习或使用XPath以实现非.Net兼容性,Linq允许您根据需要执行此操作。使用XML组件并不好玩。