Не удается получить правильные данные из XML-файла

#c# #xml

#c# #xml

Вопрос:

Вот мой код:

 XmlNodeList otherImageId =
    document.DocumentElement
            .SelectNodes("/OHManager/config/customimage/image/@id");

XmlNodeList otherImage =
    document.DocumentElement
            .SelectNodes("/OHManager/config/customimage/image");

for (int i = 0; i < 5; i  )
{
    Console.WriteLine("Image Id"   otherImageId[i].InnerText.ToString());
    Console.WriteLine("File name"   otherImage[i].InnerText.ToString());
}
  

XML:

 <OHManager>
  <config type="image">
    <customimage no="5">
      <image id="1">Sea Wallpaper.jpg</image>
      <image id="2">Sea Wallpaper.jpg</image>
      <image id="3">Sea Wallpaper.jpg</image>
      <image id="4">Sea Wallpaper.jpg</image>
      <image id="5">Sea Wallpaper.jpg</image>
    </customimage>
  </config>
</OHManager>
  

Вывод:

 Image Id1
File name10101010
Image Id2
File name10101010
Image Id3
File name10101010
Image Id4
File name10101010
Image Id5 
  

Обратите внимание на наличие строк File name10101010 . Я не могу понять, как получить правильное имя файла: Sea Wallpaper.jpg . Это дает мне идентификатор изображения, но не имя файла.

Комментарии:

1. Мой Xml: <OHManager> <тип конфигурации=»изображение»> <номер пользовательского изображения = «5»> <идентификатор изображения =»1″>Sea Wallpaper.jpg </image> <идентификатор изображения=»2″>Sea Wallpaper.jpg </image> <идентификатор изображения=»3″>Sea Wallpaper.jpg </image> <идентификатор изображения=»4″>Sea Wallpaper.jpg </image> <идентификатор изображения=»5″>Sea Wallpaper.jpg </image> </customimage> </OHManager> ЭТО БЫЛА СТРУКТУРА XML. </config>

2. Ваши запросы выглядят нормально. Можете ли вы запустить его снова, чтобы увидеть, является ли это фактическим результатом?

3. привет, Джефф, thnx 4 rply.да, это результат, я все еще получаю его.

4. спасибо Джеффу 4, редактирующему мой code..It раньше был какой-то беспорядок…

Ответ №1:

Вам не нужно выполнять 2 запроса XPath к вашему XML-документу, одного будет достаточно. Этот код должен продемонстрировать, как получить как id атрибут, так и внутренний текст узла:

 XmlNodeList list = document.DocumentElement
                        .SelectNodes("/OHManager/config/customimage/image");

foreach(XmlElement node in list)
{
    Console.WriteLine("Image Id: {0}, FileName: {1}",
               node.Attributes["id"].Value,
               node.Value);
}
  

Живой пример:http://rextester.com/rundotnet?code=THABU16531

Комментарии:

1. привет, всем, кто мне помог, спасибо за вашу помощь, проблема была в моем xml, я использую ту же структуру before.so это дает мне неверный вывод. все еще спасибо вам, ребята.