我如何使用pullparser为hashmap创建一个xml文件

时间:2014-03-21 08:14:59

标签: android xml xmlpullparser

我正在尝试从用户的输入值填充xml文件。用户将为2个条目提供一个Key和一个值。我有一个模型类,如下所示:

public class Person
{    private HashMap<String, String> hash = new HashMap<String, String>();

public Person()
{   }

public Person(String key, String val)
{ hash.put(key, val);   }


public String GetFirstName(String k)
{ return hash.get(k);   }

}

如何从类的这个对象制作一个xml?以及如何从密钥中检索xml中的值?

我想要像这样的xml:

<AllEntries>
   <entry key="key1">value1</entry> 
   <entry key="key2">value2</entry> 
   <entry key="key3">value3</entry>
</AllEntries> 

1 个答案:

答案 0 :(得分:0)

您需要使用XML解析器,如Java DOMSAX。下面的示例是Java DOM,它向您展示如何遍历HashMap并将您的条目添加到your_xml.xml

File xmlFile = new File("your_xml.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);

for (Map.Entry<String, String> m : hash.entrySet()) {
    // Create your entry element and set it's value
    Element entry = doc.createElement("entry");
    entry.setTextContent(m.getValue());
    // Create an attribute, set it's value and add the attribute to your entry       
    Attr attr = doc.createAttribute("key");
    attr.setValue(m.getKey());
    entry.setAttributeNode(attr);
    // Append your entry to the root element
    doc.getDocumentElement().appendChild(entry);
}

然后您只需将文档保存在原始文件上即可。在您的Document被修改后,您可能希望convert it to a String解析为您选择的OutputStream进行保存。