获得所有元素

时间:2014-09-15 17:30:32

标签: java xml sax

我有一个XML文档,看起来像这样(我知道,它没有意义,它只是一个例子):

<Person>
  <Name>Peter</Name>
  <Country>Sweden</Country>
  <Param name="Sport" value="yes"/>
  <Param name="Color" value="no"/>
<Person/>

它可以具有无限数量的元素Param 获取Country我做

的内容
String country = doc.getElementsByTagName("Country").item(0).getTextContent();

获取第一个name我做

的第一个属性Param的内容
String name = source.getElementsByTagName("Param").item(0).getAttributes().item(0).getNodeValue();

但是如何在不知道Param存在多少元素的情况下获取Param的所有属性的所有值?

我需要类似的东西(“伪代码”):

HashMap<String, String> hm = new HashMap<String, String>();

for(int i=0; i<=source.getElementsByTagName("Param").size(); i++){
  String name = source.getElementsByTagName("Param").item(i).getAttributes().item(0).getNodeValue();
  String value = source.getElementsByTagName("Param").item(i).getAttributes().item(1).getNodeValue();

  hm.put(name, value);
}

2 个答案:

答案 0 :(得分:1)

您可以按名称索取属性。

String attrName = source.getElementsByTagName("Param").item(i).getAttribute("name"));
String value = source.getElementsByTagName("Param").item(i).getAttribute("value"));
//you could test if the values are null
hm.put(attrName, value);

答案 1 :(得分:0)

    HashMap<String, String> hm = new HashMap<String, String>();
    SAXReader reader = new SAXReader();
    Document document = reader.read("yourxmlfilehere(url, file)");
    root = document.getRootElement();
    root = root.element("Person");
    for(Iterator i = root.elementIterator("Param"); i.hasNext();)
    {
        Element e = (Element)i.next();
        hm.put(e.attributeValue("name"), e.attributeValue("value"));
    }