我下面有一个XML,并且对于以下情况需要正确的xpath:
Look for Phone_Device_Type_ID = Cell # 1
Look for Communication_Usage_Type_ID = WORK
Display Formatted_Phone
我的xpath:
wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data[
wd:Phone_Device_Type_Reference/wd:ID='Cell # 1'
]/wd:Usage_Data[wd:Type_Data/wd:Type_Reference/wd:ID='WORK']/@wd:Formatted_Phone
示例XML
<wd:Phone_Data wd:Formatted_Phone="+1 (847) 8675309">
<wd:Country_ISO_Code>USA</wd:Country_ISO_Code>
<wd:International_Phone_Code>1</wd:International_Phone_Code>
<wd:Area_Code>847</wd:Area_Code>
<wd:Phone_Number>8675309</wd:Phone_Number>
<wd:Phone_Device_Type_Reference>
<wd:ID wd:type="WID">1cfe702a6234015468e3527fd07c1001</wd:ID>
<wd:ID wd:type="Phone_Device_Type_ID">Cell # 1</wd:ID>
</wd:Phone_Device_Type_Reference>
<wd:Usage_Data wd:Public="1">
<wd:Type_Data wd:Primary="0">
<wd:Type_Reference>
<wd:ID wd:type="WID">1f27f250dfaa4724ab1e1617174281e4</wd:ID>
<wd:ID wd:type="Communication_Usage_Type_ID">WORK</wd:ID>
</wd:Type_Reference>
</wd:Type_Data>
</wd:Usage_Data>
</wd:Phone_Data>
<wd:Phone_Data wd:Formatted_Phone="+1 (847) 8675309">
<wd:Country_ISO_Code>USA</wd:Country_ISO_Code>
<wd:International_Phone_Code>1</wd:International_Phone_Code>
<wd:Area_Code>847</wd:Area_Code>
<wd:Phone_Number>8675309</wd:Phone_Number>
<wd:Phone_Device_Type_Reference>
<wd:ID wd:type="WID">1cfe702a6234015468e3527fd07c1001</wd:ID>
<wd:ID wd:type="Phone_Device_Type_ID">Cell # 1</wd:ID>
</wd:Phone_Device_Type_Reference>
<wd:Usage_Data wd:Public="1">
<wd:Type_Data wd:Primary="0">
<wd:Type_Reference>
<wd:ID wd:type="WID">1f27f250dfaa4724ab1e1617174281e4</wd:ID>
<wd:ID wd:type="Communication_Usage_Type_ID">HOME</wd:ID>
</wd:Type_Reference>
</wd:Type_Data>
</wd:Usage_Data>
</wd:Phone_Data>
答案 0 :(得分:0)
您已经接近了,但是XPath的编写方式希望将@wd:Formatted_Phone
属性附加到wd:Usage_Data
元素上。您想在wd:Phone_Data
元素上选择该元素,并将wd:Usage_data
移到wd:Phone_Data
元素的谓词过滤器内。
以下内容选择具有满足您条件的元素的@wd:Formatted_Phone
元素的wd:Phone_Data
值(带有附加谓词,以指定的wd:ID
值为目标@wd:type
元素。
wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/
wd:Phone_Data[
wd:Phone_Device_Type_Reference/wd:ID[@wd:type='Phone_Device_Type_ID']='Cell # 1' and
wd:Usage_Data/wd:Type_Data/wd:Type_Reference/wd:ID[@wd:type='Communication_Usage_Type_ID']='WORK'
]/@wd:Formatted_Phone