仅解析xml的一部分

时间:2013-12-23 16:19:15

标签: c# .net xml

考虑以下xml:

<?xml version="1.0" encoding="utf-8" ?>
<Outer>
  <Inner1>ABC</Inner1>
  <Inner2>DEF</Inner2>
</Outer>

我希望能够在不解析整个文档的情况下获得Inner1的值(“ABC”)。这是因为实际上文档可能很长。有没有办法使用.net(XDocument。而不是手动解析它?

2 个答案:

答案 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,您必须先加载整个文档,然后才能开始在其中进行搜索。