2016-11-08 176 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