Отсутствует элемент корня
Я читаю 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>
Не могли бы вы рассказать, где я ошибаюсь.
Ответы
Ответ 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...
иногда (я не знаю, почему) этот файл стал пустым, как кто-то удаляет содержимое внутри...
сохраняйте резервную копию этого файла на локальном компьютере, а затем при появлении этой ошибки - замените файл сервера на локальный файл. Это то, что я делаю, когда эта ошибка произошла.
-
проверить доступное пространство на сервере. иногда это проблема.
Удачи.