0
ヘッダーコンテキスト内の属性を含むXML文書を解析する必要があります。Groovy GPath Slurperを使用してXML属性の値を取得する
<?xml version="1.0" encoding="UTF-8"?>
<S38:manageRequest xmlns:S38="http://ns.com/S38" xmlns:header="http://ns.com/header/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ns.com/xsd/ManageItem XSD\ManageItem.xsd">
<header:standardHeader>
<header:serviceAddressing>
<header:to>
<header:address>http://ns.com/BLAHBLAH</header:address>
<header:contextItemList>
<header:contextItem contextName="Channel" contextId="http://ns.com/contextItem">I Need This</header:contextItem>
<header:contextItem contextName="Box" contextId="http://ns.com/contextItem">Blue</header:contextItem>
</header:contextItemList>
</header:to>
</header:serviceAddressing>
</header:standardHeader>
</S38:manageRequest>
私はgroovy.util.slurpersupport.GPathResult
を使用して、「私はこれが必要」の属性「チャンネル」の値を取得したいです。
私が動作する方法を発見したが、私は、私はcontextItem
を選んでいて、それが正しいだとは思わないし、幸運にも最初のものは、私が興味を持っていずれかになります使用するすべての試み
private Map parseServiceAddressing(GPathResult message,Map values){
def serviceAddressingList=message."standardHeader"."serviceAddressing"."to"."contextItemList";
if(serviceAddressingList.isEmpty()){
throw new sourceException("serviceAddressing list is missing",values);
}
def contextItem=serviceAddressingList.'*'.find{
it.name()=='contextItem'
};
values.put(tag.CHANNEL, contextItem);
return values;
Channel
は、場所のテキストとして値を取得できません。残念ながら私はGPathを非常に大きなGroovyスクリプトの一部として使用することに縛られています。
誰かがこれを達成する正しい方法を教えてください。
それを試すことができますが御馳走を動作しますが、私は知っていました私は正しい価値を得るための方法があります。ご協力いただきありがとうございます! – Plasma
@Plasma、それは助けてうれしい。 – Rao