Linq to XML - 只读取/解析文件的第一行

时间:2015-06-29 07:44:55

标签: c# xml linq

是否可以使用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结构中的子树以加快速度?

2 个答案:

答案 0 :(得分:1)

仅加载到内存标题:

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);
    }
}

答案 1 :(得分:0)

XDocument和XElement将所有东西都读入内存,我认为你需要使用XMLReader,而不是Linq to XML。