В groovy функция Xpath не работает для xml - PullRequest
2 голосов
/ 30 марта 2020

У меня есть следующее XML:

<orders>
    <order xmlns:amz="http://www.amazon.co">
        <amz:comp>amz</amz:comp>
    </order>
    <order xmlns:ebay="http://www.ebay.co">
        <ebay:comp>ebay</ebay:comp>
    </order>
</orders>

Я проверил выражения xpath вроде // orders / order, это работает, но в groovy это не работает, я не понимаю, что неправильно.

Ниже приведен код, который я использую: import groovy. xml. *;

def source = '''<orders>
    <order xmlns:amz="http://www.amazon.co">
        <amz:comp>amz</amz:comp>
    </order>
    <order xmlns:ebay="http://www.ebay.co">
        <ebay:comp>ebay</ebay:comp>
    </order>
</orders>'''

def root = new XmlSlurper().parseText(source).declareNamespace([
    amz: "http://www.amazon.co",
    ebay: "http://www.ebay.co"
])

println root.orders
println root.orders.order."amz:comp"

Я не получаю вывод для вышеуказанного кода.

1 Ответ

1 голос
/ 30 марта 2020

В вашем примере переменная root относится к элементу <orders>, поэтому, когда вы вызываете root.orders, это как если бы вы искали

<orders>
    <orders>...</orders>
</orders>

Переименуйте root переменную в orders и выполните

println orders
println orders.order."amz:comp"

, чтобы получить следующий вывод:

amzebay
amz
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...