Как я могу проверить на существование элемента с XmlSlurper Groovy?

строка запроса выглядит как строка JSON. поэтому первое, что вам нужно сделать, это преобразовать его в объект json, чтобы получить к нему доступ.

const query = "[{\"property\":\"customerId\",\"value\":2,\"exactMatch\":true}]";
const json = JSON.parse(query);

теперь вы можете получить к нему доступ с помощью

json[0].value
32
задан Josh Brown 26 January 2009 в 16:39
поделиться

2 ответа

API немного странен, но я думаю, что существует несколько лучших способов искать детей. То, что Вы получаете, когда Вы просите "xml.bar" (который существует), или "xml.quux", который не делает, является groovy.util.slurpersupport. Объект NodeChildren. В основном набор узлов, соответствующих критериям, которые Вы попросили.

Один способ видеть, существует ли конкретный узел, состоит в том, чтобы проверить на размер NodeChildren, ожидаемый размер:

def text = "<foo><bar/></foo>"
def xml = new XmlSlurper().parseText(text)
assert 1 == xml.bar.size()
assert 0 == xml.quux.size()

Иначе должен был бы использовать метод находки и видеть, является ли название узла, который возвращается (к сожалению, что-то всегда возвращается), тем, Вы ожидали:

def text = "<foo><bar/></foo>"
def xml = new XmlSlurper().parseText(text)
assert ("bar" == xml.children().find( {it.name() == "bar"})?.name())
assert ("quux" != xml.children().find( {it.name() == "quux"})?.name())
37
ответ дан 27 November 2019 в 20:44
поделиться

isEmpty метод на работах GPathResult.

def text = "<foo><bar/></foo>"
def xml = new XmlSlurper().parseText(text)
assert false == xml.bar.isEmpty()

Это беспокоит меня, потому что элемент панели пуст - он не имеет тела. Но я предполагаю, что GPathResult не пуст, поэтому возможно, это имеет смысл.

17
ответ дан 27 November 2019 в 20:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: