XPATH搜索下一个节点

时间:2018-12-27 05:03:36

标签: c# xpath

我需要选择XPATH的父节点。

XML

<PatientDetailsXML>             
 <PList> 
               <PName type="Patient">
            <properties>
                <Room bedType="Auto" />
                <PName title="Joe Beom" PId="1234">
                    <Details>
                        <classification classification="paymenttype" category="Wallet" />
                        <classification classification="Humor" category="None" />
                        <classification classification="Food" category="Fruit" />
                    </Details>
                </PName>
                </properties>
            <childEvents>
            </childEvents>
        </PName>
                <PName type="Patient">
            <properties>
                <Room bedType="Auto" />
                <PName title="John Bair" PId="1234">
                    <Details>
                        <classification classification="paymenttype" category="Found" />
                        <classification classification="Humor" category="None" />
                        <classification classification="Food" category="Vegetables" />
                    </Details>
                </PName>
                </properties>
            <childEvents>
            </childEvents>
        </PName>
</PList>
</PatientDetailsXML>

如果我的currentnode<PName type="Patient">,请在上面的列表中排第一。我需要使用<classification classification="Food" category="Vegetables" />搜索下一个节点,并在<PNAME title>中选择它的标题。

代码

var testing = nodes[i].SelectSingleNode(@"following::Details/classification[@classification='Food'and @category ='Vegetables']")ParentNode.ParentNode.Attributes["title"].Value;

如果您在上方看到我正在做.ParentNode.ParentNode,到达<PNAME title>。这对我来说很好。但是有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用: 1.“祖先”-选择当前节点的所有父母和祖父母 2.“祖先或自身”-选择当前节点的所有父辈和祖父母,包括节点本身。

答案 1 :(得分:0)

尝试在XPath下获取必需的属性

"following::Details/classification[@classification='Food'and @category ='Vegetables']/ancestor::PNAME/@title"