【问题标题】:Need to get the Index of a XML node with specific child in groovy需要在 groovy 中获取具有特定子节点的 XML 节点的索引
【发布时间】:2021-09-14 23:39:00
【问题描述】:

我是 groovy 脚本的新手,我很难解决这个问题。我需要 body 元素的索引,其中是带有错误消息的子元素。我尝试使用findIndexValues(),但没有得到我需要的结果

在此示例中,我的代码应返回索引 0 和 2。

<?xml version='1.0' encoding='UTF-8'?>
<root>
  <Response>
    <body>
      <success>false</success>
      <errors>
        <statusCode>INVALID_EMAIL_ADDRESS</statusCode>
        <message>Wrong E-Mail</message>
        <fields>EMail</fields>
      </errors>
      <created>false</created>
    </body>
     <body>
      <id>0015r00000DiP5HAAV</id>
      <success>true</success><errors/>
      <created>false</created>
    </body>
    <body>
      <success>false</success>
      <errors>
        <statusCode>INVALID_EMAIL_ADDRESS</statusCode>
        <message>Wrong E-Mail</message>
        <fields>EMail</fields>
      </errors>
      <created>false</created>
    </body><httpHeaders/>
    <httpStatusCode>200</httpStatusCode>
    <referenceId>UpdateAccount</referenceId>
  </Response>
</root>

【问题讨论】:

  • 请添加您尝试过的代码以及失败的原因(例如错误、堆栈跟踪、日志等),以便我们对其进行改进。

标签: xml xpath groovy xml-parsing


【解决方案1】:

也许

def root = new XmlSlurper().parseText(
    '''<root>
  <Response>
    <body>
      <success>false</success>
      <errors>
        <statusCode>INVALID_EMAIL_ADDRESS</statusCode>
        <message>Wrong E-Mail</message>
        <fields>EMail</fields>
      </errors>
      <created>false</created>
    </body>
     <body>
      <id>0015r00000DiP5HAAV</id>
      <success>true</success><errors/>
      <created>false</created>
    </body>
    <body>
      <success>false</success>
      <errors>
        <statusCode>INVALID_EMAIL_ADDRESS</statusCode>
        <message>Wrong E-Mail</message>
        <fields>EMail</fields>
      </errors>
      <created>false</created>
    </body><httpHeaders/>
    <httpStatusCode>200</httpStatusCode>
    <referenceId>UpdateAccount</referenceId>
  </Response>
</root>''')

def bodyIndices = root.Response.body.findIndexValues({ b -> b.errors.message.size() > 0 })

print(bodyIndices)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    相关资源
    最近更新 更多