考虑以下xml:
<?xml version="1.0" encoding="utf-8" ?>
<Outer>
<Inner1>ABC</Inner1>
<Inner2>DEF</Inner2>
</Outer>
我希望能够在不解析整个文档的情况下获得Inner1
的值(“ABC”)。这是因为实际上文档可能很长。有没有办法使用.net(XDocument
。而不是手动解析它?
答案 0 :(得分:7)
您可以使用XmlReader
,它不解析整个文档,但只提供转发文档(类似于SAX解析器):
http://msdn.microsoft.com/en-us/library/system.xml.xmlreader(v=vs.110).aspx
我认为如下:
using (XmlReader reader = XmlReader.Create("sample.xml")) {
// Move the reader to the inner1 node
reader.MoveToContent();
reader.ReadToDescendant("Inner1");
return reader.ReadElementContentAsString();
}
答案 1 :(得分:1)
您需要解析所需的所有数据,以便查找和提取它。但是,如果您使用XmlReader执行此操作,则可以在找到所需内容后立即中止解析。相反,使用XmlDocument,您必须先加载整个文档,然后才能开始在其中进行搜索。