2016-11-08 220 views
1

,我有以下節點的存在,讓節點名稱:的XPath基於子節點

<resource> 
    <DataField1> 
     <label>...</label> 
     <alert>...</alert> 
    </DataField1> 
    <DataField2> 
     <label>...</label> 
    </DataField2> 
    <DataField3> 
     <label>...</label> 
     <alert>...</alert> 
    </DataField3> 
</resource> 

,並想顯示第1名和第3個節點,因爲它存在的子節點「警報」。

DataField1 
DataField3 

具有以下的XPath,我可以告訴節點:

//resource/*[alert] 

結果:

<DataField1> 
    <label>...</label> 
    <alert>...</alert> 
</DataField1> 
<DataField3> 
    <label>...</label> 
    <alert>...</alert> 
</DataField3> 

但這不是我想要的。

+0

你所說的 「名」 是什麼意思?標籤?或者DataField1/3? – Markus

+0

@Markus,我的意思是第二個節點的標籤 – klgr

回答

1

你只需要添加label

//resource/*[alert]/label 
+0

對不起,那不是我正在尋找的。我需要二級節點的名稱/標籤。詳細描述 – klgr

+0

XPath表達式選擇'resource/DataField1/label'和'resource/DataField3/label'。如果這不是您要查找的內容,請詳細說明您的結果應該是什麼樣子。 – Markus

+0

當我使用local-name(// resource/* [alert])時,它顯示DataField1。但我想要DataField1和DataField3。 – klgr

0

/resource/*/alert/parent::*

回報

Element='<DataField1> 
    <label>...</label> 
    <alert>...</alert> 
</DataField1>' 
Element='<DataField3> 
    <label>...</label> 
    <alert>...</alert> 
</DataField3>' 
+0

OP已顯示相同的輸出,用戶不需要此類輸出。 – Rao