XML отформатирован
<status>
<webresponse>
<properties>
<props>
<imghandle>
<image handle=1234>
<imagetag>somewhere</imagetag>
</image>
</imghandle>
</props>
<props>
<imghandle>
<image handle=1235>
<imagetag>somewhere1</imagetag>
</image>
</imghandle>
</props>
</properties>
</webresponse>
</status>
Выше приведен пример xml, возвращенного мне третьей стороной. Я пытаюсь использовать Linq для XMl для создания своего объекта, и я пытаюсь перейти к <imghandle>/<image handle=1234>
. Я могу сделать это с помощью Xpath, но когда я делаю следующее, я получаю объект ref не установлен error
from c in searchXMLResult.Descendants("props")
select c.Element("imghandle").Element("image").Attribute("handle");
PS: я знаю, что мой xml плохо отформатирован для удобства чтения, как можно разместить разделы XML при задании вопроса здесь?
Обновление 1:
Поэтому, после большого раздражения третьей стороны, я наконец получил ответ о том, что данные, которые я использовал, устарели, и они дали мне новые отформатированные данные, которые выглядят так:
<status>
<webresponse>
<properties>
<props>
<imghandle>
<image handle="1234">
<imagetag>somewhere</imagetag>
</image>
</imghandle>
<owner>
<image handle="ABcf">
</image>
</owner>
</props>
</properties>
</webresponse>
</status>
Я попробовал предложение Кевина Тиджа, посмотрите на предложения пользователя ниже, и я получил ошибку ссылки на объект. Может ли один и тот же элемент в двух разных разделах не работать с Linq to XML? то есть
from c in searchXMLResult.Descendants("props")
выберите элемент c.Element ("imghandle"). Элемент ("изображение"). Атрибут ("дескриптор");
и / или
from c in searchXMLResult.Descendants("props")
выберите элемент c.Element ("владелец"). Элемент ("изображение"). Атрибут ("дескриптор")
Update2:
Это XML, который я получаю и сохраняю на диск
<?xml version="1.0" encoding="utf-8"?>
<status>
<webresponse>
<properties>
<props>
<imghandle>
<image handle="537">
<imagetag>SFO</imagetag>
</image>
</imghandle>
<owner>
<image handle="User-2">
<firstname>
</firstname>
<lastname>Site Administrator</lastname>
<username>admin</username>
</image>
</owner>
<creationdate>2009-03-06T18:07:57Z</creationdate>
<summary>
</summary>
</props>
<status>HTTP/1.1 200 OK</status>
</properties>
</webresponse>
</status>