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