2014-01-21 5 views
1

Я пытаюсь прочитать файл update.xml для windows update размером примерно 65 МБ, я пытаюсь просто захватить атрибут URL с помощью Xpath, но по какой-то нечетной причине мой объект всегда возвращает пустой. Вот мой код:Чтение большого XML-файла с использованием XPath

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

Почему downvote? – KPS

ответ

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

    } 
Смежные вопросы