我正在尝试解析一些处理位置的 XML。这是 XML 的示例。
<location>
<city lat="51.5078" lng="-0.128" displayName="London">
<country displayName="UK"/>
</city>
<metroArea lat="51.5078" lng="-0.128" displayName="London" id="24426">
<country displayName="UK"/>
</metroArea>
</location>
<location>
<city lat="42.9833" lng="-81.25" displayName="London">
<country displayName="Canada"/>
<state displayName="ON"/>
</city>
<metroArea lat="42.9833" lng="-81.25" displayName="London" id="27374">
<country displayName="Canada"/>
<state displayName="ON"/>
</metroArea>
</location>
在上面的 XML 中,英国伦敦没有州,但加拿大伦敦有。我解析时的结果是
- 伦敦,ON
- 英国
- 肯塔基州伦敦
- 加拿大
如何跳过“状态”标签以实现以下结果?
- 伦敦
- 英国
- 伦敦,ON
- 加拿大
这是我正在使用的 Java 代码。
private void addCitiesToHashmap(List<HashMap<String, String>> menuItems, String xml)
{
XMLParser parser = new XMLParser();
Document doc = parser.getDomElement(xml);
NodeList nl = doc.getElementsByTagName(KEY_METRO_AREA);
for (int i = 0; i < nl.getLength(); i++)
{
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
map.put(KEY_ID, e.getAttribute(KEY_ID));
NodeList nl3 = doc.getElementsByTagName(KEY_CITY);
{
Element g = (Element) nl3.item(i);
map.put(KEY_DISPLAY_NAME , g.getAttribute(KEY_DISPLAY_NAME ));
}
NodeList nl4 = doc.getElementsByTagName(KEY_COUNTRY);
{
Element h = (Element) nl4.item(i);
map.put(KEY_DISPLAY_NAME_4 + "3" , h.getAttribute(KEY_DISPLAY_NAME_4 ));
}
NodeList nl2 = doc.getElementsByTagName(KEY_STATE);
{
Element f = (Element) nl2.item(i);
if (f != null)
map.put(KEY_DISPLAY_NAME_2 + "2" , f.getAttribute(KEY_DISPLAY_NAME_2 ));
menuItems.add(map);
}
}