根据兄弟节点选择树中的节点
本文关键字:节点 选择 兄弟 | 更新日期: 2023-09-27 18:08:19
我在解析节点树时遇到了一个问题。下面是我正在使用的一个示例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)。我相信我能够在树中搜索包含文本"country"answers"postal_code"的节点,并获取具有正确名称的兄弟节点(例如,搜索"country"并获取名为"short_name"的兄弟节点),但我不确定如何搜索。我能在正确的方向上得到帮助吗?我正在使用c#和XPath。
这个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")