краткое введение в XPath: -)
С //DataTable
вы получите полный узел любого <DataTable>
(здесь не задействованы пространства имен) в любом месте XML.
Как правило, лучше быть как можно более конкретным (лучше использовать /Result/DataTables/DataTable
). Но это не ответ на ваш вопрос ...
Просто представьте себе XML-код:
<root>
<innerNode attr="1"><a>Some a content</a><b>Some b content</b></innerNode>
<innerNode attr="2"><a>aaa</a><b>bbb</b></innerNode>
</root>
С /root/innerNode
вы получите оба <innerNode>
со всем контентом.
С /root/innerNode[(b/text())[1]="bbb"]
вы получите только один <innerNode>
, тот, где <b>
s text()
равен "bbb"
С /root/innerNode[@attr="1"]
вы получите единицу <innerNode>
, где атрибут attr
имеет значение "2".
Все три XPath
выборки возвращают полный узел, включая подузлы, атрибуты, что угодно.
если вам нужно только значение атрибута, вы должны запросить его:
(/root/innerNode/@attr)[2]
... возвращает значение атрибута второго <innerNode>
(фактически, 2-го появления)
/root/innerNode[(b/text())[1]="Some b content"]/@attr
... возвращает значение атрибута <innerNode>
, где <b>
имеет text()
0f "Some b content"
вернуться к вашему вопросу
Вы хотите прочитать атрибут Headers
в элементе <DataTable>
, проживающем в /Result/DataTables
. Просто используйте
/Result/DataTables/DataTable/@Headers