gpt4 book ai didi

xml - Groovy xml 请求解析

转载 作者:行者123 更新时间:2023-12-04 17:02:18 25 4
gpt4 key购买 nike

我是 groovy 的新手。

试图解析一些 xml 请求,一段时间没有运气。

作为最终结果:

  • 我想检查 xml 请求“RequestRecords”是否具有“DetailsRequest”属性;
  • 获取“FieldValue”编号,其中“RequestF”具有 FieldName="Id"。

  • 此外,由于某种原因,我不能使用 XmlSlurper,因为它返回 false 到 'def root = new XmlParser().parseText(xml)'。
    def env = new groovy.xml.Namespace("http://schemas.xmlsoap.org/soap/envelope/", 'env');
    def ns0 = new groovy.xml.Namespace("http://tempuri.org/", 'ns0')

    def xml = '''<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://tempuri.org/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <env:Body>
    <ns0:Request1>
    <ns0:Request_Sub>
    <ns0:RequestRecords TableName="Header">
    <ns0:RequestF FieldName="SNumber" FieldValue="XXX"/>
    <ns0:RequestF FieldName="TNumber" FieldValue="30"/>
    </ns0:RequestRecords>
    <ns0:RequestRecords TableName="Details">
    <ns0:RequestF FieldName="Id" FieldValue="1487836040"/>
    </ns0:RequestRecords>
    </ns0:Request_Sub>
    <ns0:isOffline>false</ns0:isOffline>
    </ns0:Request1>
    </env:Body>
    </env:Envelope>'''

    def root = new XmlParser().parseText(xml)

    println ("root" + root)

    assert "root_node" == root.name()
    println root_node

    甚至根节点的断言也失败了。

    最佳答案

    鉴于 XML,您可以使用 XmlSlurper 来获得您的两个问题的答案,如下所示:

    def root = new XmlSlurper().parseText(xml)

    // I want to check if xml request "RequestRecords" has "DetailsRequest" atrribute
    List<Boolean> hasAttribute = root.Body
    .Request1
    .Request_Sub
    .RequestRecords
    .collect { it.attributes().containsKey('DetailsRequest') }
    assert hasAttribute == [false, false]

    // Get "FieldValue" number where "RequestF" has FieldName="Id".
    String value = root.Body
    .Request1
    .Request_Sub
    .RequestRecords
    .RequestF
    .find { it.@FieldName == 'Id' }?.@FieldValue

    assert value == '1487836040'

    关于xml - Groovy xml 请求解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42467453/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com