根据兄弟选择树中的节点

时间:2014-06-13 00:00:04

标签: c# xml xpath

我在解析节点树时遇到了问题。这是我正在使用的XML文档示例:

<result>
    <type>street_address</type>
    <formatted_address>Krasickiego 6, 83-020 Cedry Wielkie, Poland</formatted_address>
    <address_component>
        <long_name>6</long_name>
        <short_name>6</short_name>
        <type>street_number</type>
    </address_component>
    <address_component>
        <long_name>Krasickiego</long_name>
        <short_name>Krasickiego</short_name>
        <type>route</type>
    </address_component>
    <address_component>
        <long_name>Cedry Wielkie</long_name>
        <short_name>Cedry Wielkie</short_name>
        <type>locality</type>
        <type>political</type>
    </address_component>
    <address_component>
        <long_name>Gmina Cedry Wielkie</long_name>
        <short_name>Gmina Cedry Wielkie</short_name>
        <type>administrative_area_level_3</type>
        <type>political</type>
    </address_component>
    <address_component>
        <long_name>Gdańsk County</long_name>
        <short_name>Gdańsk County</short_name>
        <type>administrative_area_level_2</type>
        <type>political</type>
    </address_component>
    <address_component>
        <long_name>Pomeranian Voivodeship</long_name>
        <short_name>Pomeranian Voivodeship</short_name>
        <type>administrative_area_level_1</type>
        <type>political</type>
    </address_component>
    <address_component>
        <long_name>Poland</long_name>
        <short_name>PL</short_name>
        <type>country</type>
        <type>political</type>
    </address_component>
    <address_component>
        <long_name>83-020</long_name>
        <short_name>83-020</short_name>
        <type>postal_code</type>
    </address_component>
</result>

我想从这棵树中获取国家代码(PL)和邮政编码(83-020)。我相信我能够在树中搜索包含文本&#34; country&#34;和&#34; postal_code&#34;并使用正确的名称获取兄弟节点(例如,搜索&#34; country&#34;并获取名为&#34; short_name&#34;的兄弟节点),但我不确定如何。我能帮助朝着正确的方向前进吗?我在C#中工作并使用XPath。

1 个答案:

答案 0 :(得分:0)

此XPath查询应返回short_name节点,该节点有一个名为type的兄弟节点,其值为“postal_code”:

XmlNode node = doc.SelectSingleNode("result/address_component[type='postal_code']/short_name")

执行相同操作以查找国家/地区代码:

XmlNode node = doc.SelectSingleNode("result/address_component[type='country']/short_name")