完全限定的Xpath返回null

时间:2015-09-01 06:21:49

标签: xpath

<Trial1Response xmlns="http://schemas.microsoft.com/Sql/2008/05/Procedures/dbo">
<Trial1Result>
<DataSet xmlns="http://schemas.datacontract.org/2004/07/System.Data">
    <xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element msdata:IsDataSet="true" name="NewDataSet">
    <xs:complexType>
    <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="unbounded" name="NewTable">
    <xs:complexType>
    <xs:sequence>
    <xs:element minOccurs="0" name="cust_id" type="xs:int">
    </xs:element>
    <xs:element minOccurs="0" name="fname" type="xs:string">
    </xs:element>
    <xs:element minOccurs="0" name="lname" type="xs:string">
    </xs:element>
    <xs:element minOccurs="0" name="addr" type="xs:string">
    </xs:element>
    <xs:element minOccurs="0" name="city" type="xs:string">
    </xs:element>
    <xs:element minOccurs="0" name="order_id" type="xs:int">
    </xs:element>
    <xs:element minOccurs="0" name="amount" type="xs:int">
    </xs:element>
    <xs:element minOccurs="0" name="particulars" type="xs:string">
    </xs:element>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:schema>
<diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<NewTable><cust_id>1</cust_id><fname>Akshay</fname><lname>Jain</lname><addr>Borivali</addr><city>Mumbai</city><order_id>221</order_id><amount>41</amount><particulars>Item B</particulars>
</NewTable>
<NewTable><id>223</id><Akshay1id>682</Akshay1id><amount>345</amount><particulars>Item A</particulars>
</NewTable>
</NewDataSet>
</diffgr:diffgram>
</DataSet>
</Trial1Result>
<ReturnValue>0</ReturnValue>
</Trial1Response>

我想在标签NewDataSet之间提取数据。为此,我使用以下Xpath:

/*[local-name="Trial1Response" and namespace-uri()="http://schemas.microsoft.com/Sql/2008/05/Procedures/dbo"]/*[local-name="Trial1Result" and namespace-uri()="http://schemas.microsoft.com/Sql/2008/05/Procedures/dbo"]/*[local-name="DataSet" and namespace-uri()="http://schemas.datacontract.org/2004/07/System.Data"]/*[local-name="diffgr:diffgram" and namespace-uri()="urn:schemas-microsoft-com:xml-diffgram-v1"]/*[local-name="NewDataSet" and namespace-uri()=""]

我的结果是null。我究竟做错了什么? 我应该使用完全合格的Xpath,因为如果没有它,逻辑应用程序就无法运行

编辑:我在评论后编辑了XML

1 个答案:

答案 0 :(得分:1)

更正你的xml。

onended更改为local-name

喜欢这个

local-name()

注意:如果xml中有单个/唯一元素,则无需使用namespace-uri()。