2017-05-31 193 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您可以使用解析器來讀取已存在的文件,然後創建一個簡單的函數將解析器內容加載到序列化程序,您可以在其中添加所需內容,然後覆蓋該文件 –