如何读/写xml文件?

时间:2017-05-31 20:37:57

标签: java android xml

我已经创建了一个xml文件,其中包含标记的标记和值。

<?xml version="1.0" encoding="utf-16"?>
<Scoreboard>

<Score>
    <username>Ryan</username>
    <points>200</points>
</Score>

我希望能够做的就是阅读标签内的信息,并写下他已经用新标签创建的xml文档。如果我想添加用户名:安德鲁,积分:100,我将如何实现这一目标?另外我怎样才能读取xml文件以便显示所有分数及其信息?

         Read - InputStream is = getAssets().open("highscores2.xml");

                DocumentBuilderFactory dbFactory = 
                DocumentBuilderFactory.newInstance();
                DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
                Document doc = dBuilder.parse(is);

                Element element = doc.getDocumentElement();
                element.normalize();
         write -   InputStream is = getAssets().open("highscores2.xml");

                DocumentBuilderFactory dbFactory = 
                DocumentBuilderFactory.newInstance();
                DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
                Document doc = dBuilder.parse(is);

                NodeList nodes = doc.getElementsByTagName("Score");

                Text a = doc.createTextNode("Dylly");
                Element p = doc.createElement("username");
                p.appendChild(a);

                nodes.item(0).getParentNode().insertBefore(p, nodes.item(0));         

截至目前,我将我的xml文件存储在资产文件夹中,但当我尝试写入时,我收到错误 - 说它是只读的。我怎样才能解决这个问题呢?

我将非常感谢任何帮助,我花了整个下午试图找到解决这个问题的方法,并且几乎没有提出任何问题,谢谢。

1 个答案:

答案 0 :(得分:0)

有一个用于编写xml文件的类:

serializer = Xml.newSerializer();
writer = new StringWriter(); 
try { 
serializer.setOutput(writer);
serializer.startDocument("UTF-8", true); 
serializer.setPrefix(prefix, namespace); 
serializer.startTag(prefix, tagName); 
serializer.attribute(prefix, attrName, value);
serializer.endTag(prefix, tagName); 
serializer.endDocument(); 
return writer.toString();
 } catch (IOException e) {
 throw new RuntimeException(e);
 }

甚至读取xml文件:

XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance(); 
xmlPullParserFactory.setNamespaceAware(true); 
XmlPullParser xmlPullParser = xmlPullParserFactory.newPullParser(); 
xmlPullParser.setInput(new StringReader(xml)); 
return xmlPullParser;