Подтвердить что ты не робот

Отсутствует элемент корня

Я читаю xml из xxx URl, но я получаю ошибку, поскольку отсутствует элемент Root.

Мой код для чтения xml-ответа выглядит следующим образом:

  XmlDocument doc = new XmlDocument();
  doc.Load("URL from which i am reading xml");
  XmlNodeList nodes = doc.GetElementsByTagName("Product");
  XmlNode node = null;
  foreach (XmlNode n in nodes)
   {
   }

и ответ xml выглядит следующим образом:

<All_Products>
   <Product>
  <ProductCode>GFT</ProductCode>
  <ProductName>Gift Certificate</ProductName>
  <ProductDescriptionShort>Give the perfect gift. </ProductDescriptionShort>
  <ProductDescription>Give the perfect gift.</ProductDescription>
  <ProductNameShort>Gift Certificate</ProductNameShort> 
  <FreeShippingItem>Y</FreeShippingItem>
  <ProductPrice>55.0000</ProductPrice>
  <TaxableProduct>Y</TaxableProduct>
   </Product>    
 </All_Products>

Не могли бы вы рассказать, где я ошибаюсь.

4b9b3361

Ответ 1

Привет, это странно, но попробуйте один раз

  • Прочитайте содержимое файла в строке
  • напечатайте строку и проверьте, правильно ли вы получаете XML или нет.
  • вы можете использовать XMLDocument.LoadXML(xmlstring)

Я пытаюсь использовать ваш код и тот же XML без добавления каких-либо деклараций XML, которые он работает для меня

XmlDocument doc = new XmlDocument();
        doc.Load(@"H:\WorkSpace\C#\TestDemos\TestDemos\XMLFile1.xml");
        XmlNodeList nodes = doc.GetElementsByTagName("Product");
        XmlNode node = null;
        foreach (XmlNode n in nodes)
        {
            Console.WriteLine("HI");
        }

Работает отлично,

Ответ 2

На всякий случай, когда кто-то еще приземляется здесь из Google, я был укушен этим сообщением об ошибке при использовании метода XDocument.Load(Stream).

XDocument xDoc = XDocument.Load(xmlStream);  

Убедитесь, что позиция потока установлена ​​в 0 (ноль), прежде чем вы попытаетесь загрузить Stream, и это простая ошибка, которую я всегда забываю!

if (xmlStream.Position > 0)
{
    xmlStream.Position = 0;
}
XDocument xDoc = XDocument.Load(xmlStream); 

Ответ 3

Убедитесь, что XML выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<rootElement>
...
</rootElement>

Кроме того, пустой XML файл будет возвращать те же элементы Root, что и исключение. Каждый XML файл должен иметь корневой элемент / node, который включает все остальные элементы.

Ответ 4

Если вы загружаете XML файл из удаленного места, я бы проверил, действительно ли файл загружается правильно с помощью сниффера, например Fiddler.

Я написал быстрое консольное приложение для запуска вашего кода и анализа файла, и он отлично работает для меня.

Ответ 5

  • Проверьте файл tree.config, расположенный в папке config... иногда (я не знаю, почему) этот файл стал пустым, как кто-то удаляет содержимое внутри... сохраняйте резервную копию этого файла на локальном компьютере, а затем при появлении этой ошибки - замените файл сервера на локальный файл. Это то, что я делаю, когда эта ошибка произошла.

  • проверить доступное пространство на сервере. иногда это проблема.

Удачи.