Итак, в вопросе есть 2 вещи
1) Проверка правильности xml 2) Подсчет количества узлов под определенным узлом
Допустим, у вас неверно сформированный xml(Примечание: > пропущено из тега
<note>
<to>Tove</to>
<from
<test>121</test>
<testing>123</testing>
</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Тогда вывод будет выглядеть как
Mon Oct 01 08:34:54 IST 2018: ERROR: Invalid XML
Mon Oct 01 08:34:54 IST 2018: ERROR: org.apache.xmlbeans.XmlException: error: Unexpected character encountered (lex state 10): '<'
Так вот код
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
try
{
def xmlHolder = groovyUtils.getXmlHolder("RequestName#Request")
def countofRoot = xmlHolder.getDomNodes("//*").size()
def countofbelowNodes = xmlHolder.getDomNodes("//*:from/*").size()
log.info "size of XML is " + countofRoot
log.info "size of XML is " + countofbelowNodes
}
catch(Exception e)
{
log.error "Invalid XML"
log.error e
}
Когда XML верен, он выдает следующий вывод:
Обратите внимание , если вы указали неправильный xpath, тогда может возникнуть исключениеиз-за этого также. Так что не обязательно, чтобы это был неверный XML. Но детали исключения, т. е. помогут вам в понимании проблемы
Мне легче использовать xmlHolder, чем XMLParser / XMLSlurper