Linq到XML-只读取/分析文件的第一行
本文关键字:一行 文件 XML- 读取 Linq | 更新日期: 2023-09-27 18:00:28
是否可以使用LINQ to xml仅解析xml文件的一部分?
让我们以以下文件为例:
<?xml version="1.0" encoding="utf-16" standalone="yes"?>
<FileWithData>
<Header>
<Type>File</Type>
<Content>Data</Content>
</Header>
<TonsOfData>
.......
</TonsOfData>
</FileWithData>
我想从几个这样的文件中读取Header
信息,但是用XElement.Load(pathXmlFile)
加载它们并导航到Header
-节点需要相当长的时间。有没有可能从我的xml结构中只解析一个子树来加快速度?
只加载到内存头:
using (var xmlReader = XmlReader.Create(pathXmlFile))
{
if (xmlReader.ReadToFollowing("Header"))
{
XmlReader headerSubtree = xmlReader.ReadSubtree();
XElement headerElement = XElement.Load(headerSubtree);
// process headerElement
Console.WriteLine(headerElement.Element("Type").Value);
Console.WriteLine(headerElement.Element("Content").Value);
}
}
XDocument和XElement将所有内容读取到内存中,我认为您需要使用XMLReader,而不是Linq-to-XML。