2015-01-07 1 views
0

Привет, я пытаюсь извлечь значение UniqueID с помощью xpath/ns0: Start/ns0: Area/ns0: Test/ns0: Идентификатор/ns2: UniqueID, но его не работает PLS помогите мне я нужна нормальная XPath, а также команду MELXPATH не работает ns2: namespace preifix not defined error

<?xml version="1.0" encoding="UTF-8"?> 
 
<ns0:Start xmlns:ns0="http://www.example.com/xmlns/9/Test"> 
 
    <ns0:Area> 
 
    <ns0:Test> 
 
     <ns0:Identifier> 
 
     <ns2:UniqueID xmlns:ns2="http://www.example.com/xmlns/9/foundation">123456</ns2:UniqueID> 
 
     </ns0:Identifier> 
 
    </ns0:Test> 
 
    <ns0:Test> 
 
     <ns0:Identifier> 
 
     <ns2:ExternalOrderID xmlns:ns2="http://www.example.com/xmlns/9/foundation">external</ns2:ExternalOrderID> 
 
     </ns0:Identifier> 
 
     <ns0:Info> 
 
     <ns0:Status>st</ns0:Status> 
 
     </ns0:Info> 
 
    </ns0:Test> 
 
    </ns0:Area> 
 
</ns0:Start>

+1

Вам нужно указать свой код XPath, что означает ваши префиксы - нет требования или предположения, что префиксы, используемые в выражении XPath, являются теми же префиксами, которые используются в документе XML, то есть вы можете использовать 'exf' для' http: // www.example.com/xmlns/9/foundation' namespace. –

+0

может показать мне, как написать xpath для этого –

+0

Я не знаком с вашим инструментом, но я привел пример в онлайн-тесте [здесь] (http://www.xpathtester.com/xpath/34d0d929066d5181a5f1aa71acf04068) - как вы можете видеть, я сознательно использовал разные префиксы, чтобы показать, что они не имеют значения - только URI пространства имен. –

ответ

0

Как сказал Виктор вам нужно использовать mulexml:namespace-manager для пространства имен: -

Попробуйте следующее: -

<mulexml:namespace-manager includeConfigNamespaces="true"> 
    <mulexml:namespace prefix="ns0" uri="http://www.example.com/xmlns/9/Test"/> 
    <mulexml:namespace prefix="ns2" uri="http://www.example.com/xmlns/9/foundation"/> 
</mulexml:namespace-manager> 

Затем используйте следующую Xpath для получения UniqueID: - #[xpath('//ns0:Start/ns0:Area/ns0:Test/ns0:Identifier/ns2:UniqueID').text]

и ExternalOrderID: - #[xpath('//ns0:Start/ns0:Area/ns0:Test/ns0:Identifier/ns2:ExternalOrderID').text]

Это будет работать :)

0

Используйте name space manager:

<mulexml:namespace-manager includeConfigNamespaces="true"> 
    <mulexml:namespace prefix="foo" uri="http://foo.com"/> 
</mulexml:namespace-manager> 

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

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