2015-04-05 2 views
0

Я пытаюсь читать значения XML-узлов из XML-файла. Но когда я делаю это, это исключает это исключение:XMLException был необработанным «var» - это неожиданный токен. Ожидаемый токен равен '='

System.Xml.XmlException: 'src' - это неожиданный токен. Ожидаемый токен равен '='. Строка 29, позиция 19. в System.Xml.XmlTextReaderImpl.Throw (String Рез, String [] арг) на System.Xml.XmlTextReaderImpl.ParseAttributes() в System.Xml.XmlTextReaderImpl.ParseElement() в системе. Xml.XmlTextReaderImpl.ParseElementContent() в System.Xml.XmlLoader.LoadNode (Boolean skipOverWhitespace) в System.Xml.XmlLoader.LoadDocSequence (XmlDocument parentDoc) в System.Xml.XmlDocument.Load (XmlReader читателя) в системе. Xml.XmlDocument.Load (String имя файла) в ToolkitM9.RVersion.Window_Loaded (отправитель объекта, RoutedEventArgs е) в F: \ Development \ ToolkitM9 \ ToolkitM9 \ RVersion.xaml.cs: линия 48

Это мой код:

  XmlDocument xDoc = new XmlDocument(); 
      xDoc.Load("Version.xml"); 

      XmlNodeList name = xDoc.GetElementsByTagName("Name"); 
      XmlNodeList ver = xDoc.GetElementsByTagName("Version"); 
      XmlNodeList notes = xDoc.GetElementsByTagName("Notes"); 
      XmlNodeList openSite = xDoc.GetElementsByTagName("openSite"); 
      XmlNodeList link = xDoc.GetElementsByTagName("Link"); 

      MessageBox.Show(
      "Name: " + name[0].InnerText + "\n" + 
      "Version: " + ver[0].InnerText + "\n" + 
      "Notes: " + notes[0].InnerText + "\n" + 
      "Open Link? " + openSite[0].InnerText + "\n" + 
      "Link: " + link[0].InnerText + "\n" 

Это мой XML-файл:

<Recovery> 
    <Name>TWRP</Name> 
    <Version>2.5.0.3</Version> 
    <Notes>There are some bugs remaining in this build. See here..</Notes> 
    <openSite>true</openSite> 
    <Link>http://google.com</Link> 
</Recovery> 

Спасибо за любую помощь! :)

+0

Поскольку в вашем примере xml или = в вашем примере xml нет сомнений, что вы загружаете правильный файл. Вы каким-то образом загружаете этот файл с веб-сервера или аналогично, прежде чем пытаться его проанализировать? –

+0

О да, извините, я забыл упомянуть! Я использовал: 'xDoc.Load (" https://s.basketbuild.com/dl/devs?dl=squabbi/m9/recoveries/ "+ ToolkitM9.Properties.Settings.Default [" Устройство "] +"/Версия .xml ");' Где 'ToolkitM9.Properties.Settings.Default [" Device "]' является переменной. например, _GSM_ – squabbi

+0

Точно так, что «xml», который вы обрабатываете, не является тем, что вы ожидаете от него, а скорее как сообщение об ошибке как html. Поскольку он, похоже, работает при доступе к нему через обычный браузер, он, вероятно, ожидает, что некоторые заголовки будут отправлены как User-Agent, Accepts или иначе, что XmlDocument не установит для вас. –

ответ

0

Это работает для меня. Уведомление Я использую System.Xml.Linq.XDocument, а не XmlDocument. В то время как XDocument является предпочтительным, я не думаю, что использование XmlDocument является вашей проблемой. Я согласен с @ Karl-Johan Sjogren в том, что вы, вероятно, не разбираетесь в том, что считаете себя, хотя я не согласен с необходимостью устанавливать заголовки. Пропуск файла и непосредственная загрузка URI успешно завершены:

XDocument doc = XDocument.Load("https://s.basketbuild.com/dl/devs?dl=squabbi/m9/recoveries/GSM/Version.xml"); 
var name = doc.Root.Element("Name").Value; 
var version = doc.Root.Element("Version").Value; 
var notes = doc.Root.Element("Notes").Value; 
var site = doc.Root.Element("openSite").Value; 
var link = doc.Root.Element("Link").Value; 
Console.WriteLine(name); 
Console.WriteLine(version); 
Console.WriteLine(notes); 
Console.WriteLine(site); 
Console.WriteLine(link); 
+0

Большое спасибо! Сейчас я работаю! :) – squabbi

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