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结构中只解析一个子树来加快速度?

Linq到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。