使用定義在http://www.w3schools.com/xpath/xpath_examples.asp的XPath方法 我可以輕鬆訪問XML字符串中的元素。但是這不適用於SOAP數據包,比如我下面的內容。我得到的錯誤是「SOAP-ENV未聲明」。使用XPath字符串解析SOAP消息
我的XPath字符串
/SOAP-ENV:Envelope/SOAP-ENV:Body/SpRc:ScanPortsResponse/SpRc:PortDescs[1]
XML/SOAP消息
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SpRc="urn:SpRc">
<SOAP-ENV:Body>
<SpRc:ScanPortsResponse>
<SpRc:PortDescs>
<SpRc:item>
<SpRc:Serial>4215002032</SpRc:Serial>
<SpRc:TypeNumber>215</SpRc:TypeNumber>
<SpRc:Ip>4M5rAQ==</SpRc:Ip>
<SpRc:Mac>GDAAURgk</SpRc:Mac>
<SpRc:FirmwareVersion>1</SpRc:FirmwareVersion>
<SpRc:FirmwareVariant>0</SpRc:FirmwareVariant>
<SpRc:Port>1</SpRc:Port>
<SpRc:OutputType>28738</SpRc:OutputType>
<SpRc:Capabilities>97</SpRc:Capabilities>
<SpRc:InUse>1</SpRc:InUse>
</SpRc:item>
</SpRc:PortDescs>
<SpRc:SpRcResult>0</SpRc:SpRcResult>
</SpRc:ScanPortsResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
我實際上在SOAP消息的根標記中定義了命名空間,我相信這就是XPATH找不到它的原因。它可以工作,如果我去一個級別。 –