使用XPath和GPathResult查找所有节点并添加新属性

时间:2018-02-26 15:15:11

标签: xml xpath groovy xmlslurper gpath

...编辑 我在Groovy中的知识是基本的,我需要执行以下操作,我不知道该怎么做。

让我们说我有这个XML:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
 <soap:Body>
  <ns2:analyzeEffectOfReplaceOfferResponse>
      <ns2:productOfferings>
        <ns2:productOffering xsi:type="ns2:ProductOfferingInstanceCore" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
           <ns2:opExtn>C_P87531945-0993-46d1-8f23-ed23caa6e0cf</ns2:opExtn>
           <ns2:productOffering>
              <ns9:id>8447669</ns9:id>
           </ns2:productOffering>
           <ns2:productOffering>
              <ns9:id>8447100</ns9:id>
           </ns2:productOffering>
        </ns2:productOffering>
     </ns2:productOfferings>
  </ns2:analyzeEffectOfReplaceOfferResponse>
</soap:Body>
</soap:Envelope>

给出XPath表达式,如:

/Body/analyzeEffectOfReplaceOfferResponse/productOfferings/productOffering/productOffering

和GPathResult:

gpathRequest = new XmlSlurper().parse(inputFile)

我知道如何使用findAll搜索所有相关标签。让我们说我将Xpath存储在xPath变量中:

def gpath = "XML." + xPaths
child = Eval.me( 'XML', gpathRequest, gpath ).depthFirst().findAll{it.value}

但是我不知道如何以收集的形式处理结果。如何在找到我需要的结果后添加新属性?

0 个答案:

没有答案