2017-05-31 208 views
0

我有一个xml文件已经创建了标签和值的标签。如何读取/写入xml文件?

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

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

所有我希望能够做的就是读取标签内的信息以及写TOT他已经创建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文件存储在资源文件夹,但是当我试图写它,我给出一个错误 - 说它是只读的。我怎样才能解决这个问题呢?

任何帮助将不胜感激,我花了整个下午试图找到解决这个问题,并已几乎没有拿出,谢谢。

+0

Assets文件夹是只读的。您需要将文件移动到SD卡 –

+0

@ cricket_007感谢您的回复。我会试试看看它是否可行! – RW6

+0

@ cricket_007如果用户没有SD卡,我可以在哪里保存文件。无论如何将它保存在应用程序中,它也是可读可写的? – RW6

回答

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; 
+0

如果我不想创建一个全新的文件,我将如何写入已存在的文件而不需要创建一个新文件?我计划在用户下载应用程序时将5个分数放入文件中。 – RW6

+0

@ RW6您可以使用解析器来读取已存在的文件,然后创建一个简单的函数将解析器内容加载到序列化程序,您可以在其中添加所需内容,然后覆盖该文件 –