【发布时间】:2010-08-09 11:57:19
【问题描述】:
我有一个 XML SOAP 结果:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CreateCIInStockResponse xmlns="http://somenamespace.com/">
<CreateCIInStockResult>
<Status>OK</Status>
<Data>SOMERESULT</Data>
</CreateCIInStockResult>
</CreateCIInStockResponse>
</soap:Body>
</soap:Envelope>
如您所见,CreateCIInStockResponse 中定义的命名空间使用默认命名空间 - 未定义前缀。
如果我们使用,我可以同时获得 Status 和 Data
/soap:Envelope/soap:Body/node()/node()/node()/text()
我说得对吗,没有办法 - 使用 XPath - 直接访问“数据”的内容?
我的问题是,我既不能修改对网络服务的调用,也不能修改从网络服务返回的结果。我所能做的就是使用 XPath 来获取我的数据。
有什么建议吗?
【问题讨论】:
-
我自己不使用解析器。它是一个完整的、已编译的应用程序(如在黑盒中),一方面采用 XML,另一方面采用 XPATH。它做一些事情,获取一个值并继续使用该值。
标签: xml xpath xml-namespaces