0

我正在尝试解析一些处理位置的 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);
            }
        }
4

1 回答 1

0

根据您的需求定义,为了从第一条记录中“跳过”状态字段,您可以Substring()结合使用方法IndexOf(',')来查找逗号的位置并删除以下部分

于 2013-05-10T21:35:28.593 回答