我有一个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);
}
答案 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"));
}