2016-11-16 2 views
0

я запрос на WS, что можно разобрать с // * [XPath-имя локального() = 'someparentnode'] Результатом этого XPath извлекает XML как этотXPath для синтаксического анализа XML в пределах WS ответ XML

<?xml version="1.0" encoding="ISO-8859-1"?> 
<Response xmlns="SOMETHING">  
    <SOMEDATA>OK</SOMEDATA> 
    <SOMEDATA1>110075700011</SOMEDATA1> 
    <ResponseOK>   
     <SOMEDATA3>123123</SOMEDATA3>  
     <SOMEDATA4>asda</SOMEDATA4> 
    </ResponseOK> 
</Response > 

мне нужно значение SOMEDATA3, но когда я пытаюсь делать // * [имя-местный() «someparentnode» =]/ответ/ResponseOK/SOMEDATA3 я ничего не получаю

Я понятия не имею, что происходит. Любая помощь или информация действительно оценены, так как мне это нужно для моей работы.

Заранее благодарим людей, которые когда-то помогали другим!

ответ

0

Обратите внимание, что элементы-потомки без префикса неявно наследуют пространство имен по умолчанию от предка. Это означает, что в данном XML, все элементы находятся в пространстве имен «НЕЧТО», так что вам нужно использовать local-name() для каждого элемента в вашем XPath:

//*[local-name()='someparentnode'] 
/*[local-name()='Response'] 
/*[local-name()='ResponseOK'] 
/*[local-name()='SOMEDATA3'] 
+0

Так что это будет // * [имя локального() = 'someparentnode']/* [local-name() = 'Response']/* [local-name() = 'ResponseOK']/* [local-name() = 'SOMEDATA3'] ?? –

+0

Должен сказать, что этот xpath не получил никакого результата:/ –

+0

Может быть, без '* [local-name() = 'someparentnode']' part .., так как в XML вы не разместили – har07

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