首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过xpath从wsdd获取服务而不是wroking (xmltask)

通过xpath从wsdd获取服务而不是wroking (xmltask)
EN

Stack Overflow用户
提问于 2010-06-08 00:52:21
回答 1查看 316关注 0票数 2

我正在尝试获取XPath "/deployment/service“。在此网站上测试:http://www.xmlme.com/XpathTool.aspx

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org  /axis/wsdd/providers/java">

 <service name="kontowebservice" provider="java:RPC" style="rpc" use="literal">
  <parameter name="wsdlTargetNamespace" value="http://strategies.spine"/>
  <parameter name="wsdlServiceElement" value="ExposerService"/>
  <parameter name="wsdlServicePort" value="kontowebservice"/>
  <parameter name="className" value="some.package.internal.KontoWebServiceImpl_WS"/>
  <parameter name="wsdlPortType" value="Exposer"/>
  <parameter name="typeMappingVersion" value="1.2"/>
  <operation xmlns:operNS="http://strategies.spine" xmlns:rtns="http://www.w3.org/2001/XMLSchema" name="expose" qname="operNS:expose" returnQName="exposeReturn" returnType="rtns:anyType" soapAction="">
    <parameter xmlns:tns="http://www.w3.org/2001/XMLSchema" qname="in0" type="tns:anyType"/>
  </operation>
  <parameter name="allowedMethods" value="expose"/>
  <parameter name="scope" value="Request"/>

</service>
</deployment>

我绝对不能理解为什么它总是告诉我我的xpath不匹配……这可能很愚蠢,但是我是不是漏掉了什么?

编辑

感谢Dimitre Novatchev的回答,我找到了一个变通方法:

代码语言:javascript
复制
<xmltask failwithoutmatch="true" report="false">
    <fileset dir="${src.gen}/" includes="**/*-deploy.wsdd" />
    <copy path="//*[local-name()='service']" buffer="tmpServiceBuf" append="true" />
</xmltask>
<xmltask failwithoutmatch="true" report="false" source="${basedir}/env/axis/WEB-INF/server-config.wsdd" dest="${build.stage}/resources/WEB-INF/server-config.wsdd">
    <insert path="//*[local-name()='transport'][last()]" buffer="tmpServiceBuf" position="after" />
</xmltask>

使用xmltask (这是让我头疼的工具)绑定名称空间似乎是不可能的。上面的代码完成了这个任务。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-08 10:29:41

问题:这个XML文档有一个默认的名称空间。XPath认为任何无前缀的名称都在"no-namespace“中。它尝试选择元素deploymentservice不在无名称空间中的/deployment/service,并且不选择任何节点,因为在提供的XML文档中没有这样的元素在“无名称空间”中(它们都在"http://xml.apache.org/axis/wsdd/“名称空间中)。

解决方案:使用托管XPath的语言(比如C#、Jave、XSLT或您可能正在使用的任何其他语言)将前缀(比如x:)绑定到名称空间"http://xml.apache.org/axis/wsdd/"

然后,更改:

/deployment/service

/x:deployment/x:service

现在,最后一个XPath表达式正确地选择了所需的节点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2991463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档