2013-11-11 4 views
0

Я пытаюсь получить элемент и его братьев и сестер через 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); 
+2

'// item/name' является атрибутом, а не элементом. Попробуйте изменить xpath на '// item/object/file [@ name = 'STG08828']' – Romoku

+0

Вы уверены, что это тот же самый случай (два значения 'name'), поскольку XSLT чувствителен к регистру? – freefaller

+0

Да, я использую xml-файл, который я вставил выше. В нем есть только несколько элементов. – float

ответ

1

Я думаю, что вы хотите:

//item/object/file[@name='STG08828'] 

Или может быть просто:

//file[@name='STG08828'] 
+0

Вы правы, но когда я пытаюсь его получить, ничего не выбрано ... Я обновляю свой пост. – float

0

Я думаю, что вам не хватает своего названия места для Xmlns = 'http://www.lotus.com/dxl'

Пример:

XNamespace myMs = "http://www.lotus.com/dxl"; 

 Смежные вопросы

  • Нет связанных вопросов^_^