我有一個XML SOAP結果:XML + XPATH:使用默認命名空間的任何方式?
<?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定義的命名空間使用默認的命名空間 - 沒有定義的前綴。
我能得到這兩個狀態和數據如果我們使用
/soap:Envelope/soap:Body/node()/node()/node()/text()
我說得對,那也沒辦法 - 使用XPath - 直接訪問「數據」的內容?
我的問題是,我既不能修改對web服務的調用,也不能修改從web服務返回的結果。我所能做的就是使用XPath來獲取數據。
有什麼建議嗎?
什麼是您使用的基礎XML解析器? Vtd-xml實際上允許你訪問默認的命名空間,因爲它沒有前綴。 – 2010-08-09 22:16:56
我自己不使用解析器。它是一個完整的,編譯好的應用程序(如黑匣子),它將XML用於一邊,XPATH用於另一邊它執行某些操作,獲取值並繼續使用該值。 – BlaM 2010-08-11 13:07:41