使用XPath读取大型XML文件

时间:2014-01-21 21:08:16

标签: c# xml xpath linq-to-xml

我正在尝试读取大小约为65mb的windows update package.xml文件,我试图使用Xpath获取URL属性,但由于某些奇怪的原因,我的对象总是返回空。这是我的代码:

doc.Load(@".\package.xml");

string xpath= "/OfflineSyncPackage/FileLocations/FileLocation/@Url";

XmlNodeList nodeList2 = doc.SelectNodes(xpath);

我也尝试过使用XmlReader,这对我来说也不起作用:

string packXML = @".\package.xml";
using (XmlReader xr = XmlReader.Create(packXML))
{
    while (xr.Read())
    {
        switch (xr.NodeType)
        {
            case XmlNodeType.Element:
                if (xr.Name == "OfflineSyncPackage")
                {
                    xr.ReadStartElement("FileLocations");
                    if (xr.Name == "FileLocations")
                    {
                        if (xr.Name == "FileLocation")
                        {

                        }
                    }
                }
            break;
        }
    }
}

package.xml文件可以在package.cab中找到,该文件位于以下文件中:http://download.windowsupdate.com/microsoftupdate/v6/wsusscan/wsusscn2.cab

执行此操作的最佳方法是什么,因为我不希望由于大小而将整个文件加载到内存中 任何建议表示赞赏!谢谢

1 个答案:

答案 0 :(得分:1)

我终于明白了!

public void ParseXML(string XMLPath)
    {
        XmlReader xmlReader = XmlReader.Create(XMLPath);

        while (xmlReader.Read())
        {
            if (xmlReader.Name.Equals("FileLocation") && (xmlReader.NodeType == XmlNodeType.Element))
            {
                string url = xmlReader.GetAttribute("Url");
            }
        }

    }