2015-07-07 2 views
1

У меня есть Xelement следующим образом.Невозможно получить элементы с использованием XPathSelectElements

<root type="object"> 
<meta type="object"> 
    <disclaimer type="string">XXXXX</disclaimer> 
    <license type="string">http://open.fda.gov/license</license> 
    <last_updated type="string">2015-05-31</last_updated> 
</meta> 
<results type="array"> 
    <item type="object"> 
     <term type="string">Oxygen</term> 
     <count type="number">397</count> 
    </item> 
    <item type="object"> 
     <term type="string">Ibuprofen</term> 
     <count type="number">301</count> 
    </item>   
</results> 

IEnumerable<XElement> data = XRoot.XPathSelectElements("/root/results/item/term"); 

Я попробовал код выше, чтобы получить массив терминоэлемента. Но в результате я получаю null. Я пробовал код в инструментах XML, и я получил результат. Но все равно я не могу получить.

Могу ли я узнать, пропал ли я что-то или где я ошибаюсь?

Заранее спасибо.

+1

Что такое 'XRoot'? И ваш XML не хватает закрывающего тега ''. –

ответ

2

попробовать это:

IEnumerable<XElement> data = XRoot.XPathSelectElements("root/results/item/term"); 

что XRoot? вы должны позвонить XPathSelectElements() на ваш xelement ...

+0

Привет. Благодарю. Это действительно работает. Я использовал полный путь и в инструментах xml, я получаю ответ. Могу ли я узнать объяснение для кода ур. – NANDAKUMAR

+0

Если узел результатов находится внутри корневого узла, то путь xpath: «root/results/item/term», который совпадает с «./root/results/item/term», а не «/ root/results/item/term ». Вот как это работает в C# – greenfeet