Я пытаюсь получить элемент и его братьев и сестер через XpathNavigator.Путь Xpath не работает
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE document SYSTEM 'xmlschemas/domino_6_5_5.dtd'>
<document xmlns='http://www.lotus.com/dxl' version='6.5' maintenanceversion='5.0'>
<item name='Keywords'><text/></item>
<item name='Version'><number>1</number></item>
<item name='UPDATEDISTRIBUTION'><text>1</text></item>
<item name='$FILE' summary='true' sign='true' seal='true'>
<object>
<file hosttype='cdstorage' compression='none' flags='storedindoc' name='STG08828'>
<created><datetime>20110119T230442,22+01</datetime></created>
</file>
</object>
</item>
</document>
Я хочу, чтобы перейти к файлу-элемента со следующим XPath:
//item/name/object/file[@name='STG08828']
Почему этот путь не так?
EDIT: Спасибо за подсказку с моим «именем» -проблема.
Когда я пытаюсь запустить его, я ничего не получаю.
XmlElement rootNode = xmlDoc.DocumentElement;
// select the file Element
String query = "//file[@name='" + name + "']";
XmlNodeList fileElement = rootNode.SelectNodes(query);
'// item/name' является атрибутом, а не элементом. Попробуйте изменить xpath на '// item/object/file [@ name = 'STG08828']' – Romoku
Вы уверены, что это тот же самый случай (два значения 'name'), поскольку XSLT чувствителен к регистру? – freefaller
Да, я использую xml-файл, который я вставил выше. В нем есть только несколько элементов. – float