Groovy - XmlSlurper - 计数节点
Groovy - XmlSlurper - count node
我是Groovy的新手,最近需要统计给定的XML数据块的复杂度
我想出了一个方法来确定数据块是否是 XML 格式化的。但我不确定如何计算给定 XML 块的所有节点。
这是我的代码:
def invoke(msg)
{
try {
contentBody = msg.get("my.message");
new XmlSlurper().parseText(contentBody);
Trace.debug("XML is well formed, request body is " + contentBody);
return true;
}
catch (Exception e){
Trace.error("Invalid xml, request body is " + contentBody);
return false;
}
}
非常感谢。
干杯,
文森特
您尝试过以下方法吗?
new XmlSlurper().parseText(...).depthFirst().size()
所以问题中有两件事
1) 检查 xml 是否有效
2)统计某个Node下的节点数
假设您的 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。但是 e 即异常详细信息将帮助您了解问题
我觉得好用xml持有然后XMLParser/XMLSlurper
我是Groovy的新手,最近需要统计给定的XML数据块的复杂度
我想出了一个方法来确定数据块是否是 XML 格式化的。但我不确定如何计算给定 XML 块的所有节点。
这是我的代码:
def invoke(msg)
{
try {
contentBody = msg.get("my.message");
new XmlSlurper().parseText(contentBody);
Trace.debug("XML is well formed, request body is " + contentBody);
return true;
}
catch (Exception e){
Trace.error("Invalid xml, request body is " + contentBody);
return false;
}
}
非常感谢。
干杯, 文森特
您尝试过以下方法吗?
new XmlSlurper().parseText(...).depthFirst().size()
所以问题中有两件事
1) 检查 xml 是否有效 2)统计某个Node下的节点数
假设您的 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。但是 e 即异常详细信息将帮助您了解问题
我觉得好用xml持有然后XMLParser/XMLSlurper