我正在使用SOAP客户端,我需要发送包含XPATH作为Predicates的请求。 在这种情况下,谓词包括多个节点,这些元素来自不同的名称空间。
我想生成XPath,因此它知道其元素的名称空间。我目前已经硬编码了元素的名称以及假定的命名空间,因为它是在创建请求时动态生成的。有一件事我可以使用所有名称空间修复package-java.info并在下面配置插件,根本不生成这些包类,并在构建谓词时对名称空间进行硬编码。一些我对这种方法不太满意,并认为应该有更好的方法。
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<configuration>
<args>
<arg>-npa</arg>
</args>
</configuration>
</plugin>
要求发送到Webservice服务器的请求。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<exchange:SCNMessage xmlns:exchange="http://example1.com/abc/exchange" xmlns:scn="http://example1.com/abc/scn"
xmlns:ns3="http://example.com/abc/structure/2.0" xmlns:ns4="http://example.com/abc/core/2.0"
xmlns:ns5="http://example.com/abc/domains/migration/2.1"
xmlns:ns6="http://example.com/abc/domains/screening/2.1">
<scn:SchemaVersion xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<scn:Header xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<scn:Query>
<scn:StartingResults>1</scn:StartingResults>
<scn:MaximumResults>10</scn:MaximumResults>
<scn:AsOfDateTime xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<scn:PredicateSet>
<scn:PredicateSetIdentifier>Request Application Data</scn:PredicateSetIdentifier>
<scn:Predicate>//scn:SCN/scn:ScnMetadata/scn:ReceivedSystem!=HELLO
</scn:Predicate>
<scn:Predicate>//scn:SCN/scn:Request/ns5:ActivityStatus/ns5:StatusText="KUAUN"</scn:Predicate>
<scn:Predicate>//scn:SCN/scn:Request/ns6:Program="XYZ"</scn:Predicate>
<scn:Predicate>//scn:SCN/scn:Request/scn:Source="ABC"</scn:Predicate>
<scn:Predicate>//scn:SCN/ns3:Person/ns3:PersonCitizenshipCode="INR"</scn:Predicate>
</scn:PredicateSet>
<scn:ResultSet>
<scn:ResultText>//scn:SCN/scn:Request</scn:ResultText>
</scn:ResultSet>
</scn:Query>
</exchange:SCNMessage>
请让我知道,如果有人解决了类似的问题或任何指向优雅解决方案的方向。