0
在我的android應用程序中,我使用一個xml文件在應用程序中存儲一些歷史信息。Android數據存儲在XML文件
以下是我用於輸入文件新記錄的代碼。
String filename = "file.xml";
File xmlFilePath = new File("/data/data/com.testproject/files/" + filename);
private void addNewRecordToFile(History history)
{
try
{
DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
Document doc = docBuilder.parse(xmlFilePath);
Element rootEle = doc.getDocumentElement();
Element historyElement = doc.createElement("History");
rootEle.appendChild(historyElement);
Element customerEle = doc.createElement("customer");
customerEle.appendChild(doc.createTextNode(history.getCustomer()));
historyElement.appendChild(customerEle);
Element productEle = doc.createElement("product");
productEle.appendChild(doc.createTextNode(history.getProduct()));
historyElement.appendChild(productEle);
//-------->
DOMSource source = new DOMSource(doc);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
StreamResult result = new StreamResult(xmlFilePath);
transformer.transform(source, result);
}
catch (ParserConfigurationException e)
{
Log.v("State", "ParserConfigurationException" + e.getMessage());
}
catch (SAXException e)
{
Log.v("State", "SAXException" + e.getMessage());
}
catch (IOException e)
{
Log.v("State", "IOException" + e.getMessage());
}
catch (TransformerConfigurationException e) {
e.printStackTrace();
}
catch (TransformerFactoryConfigurationError e) {
e.printStackTrace();
}
catch (TransformerException e) {
e.printStackTrace();
}
}
XML文件格式
<?xml version="1.0" encoding="UTF-8"?>
<HistoryList>
<History>
<customer>Gordon Brown Ltd</customer>
<product>Imac</product>
</History>
<History>
<customer>GG Martin and Sons</customer>
<product>Sony Vaio</product>
</History>
<History>
<customer>PR Thomas Ltd</customer>
<product>Acer Laptop</product>
</History>
</HistoryList>
所以使用此代碼我可以成功添加一個新的rocord到文件中。但是我的android的最低目標版本應該是API級別4.此代碼適用於API Level 8及更高版本。
DOMSource的,的TransformerFactory類不低於8.因此所有的東西在Android的API級別提供的評論// --------前>作品的API低於8
有沒有人知道我可以寫入xml文件的任何方式,而無需使用Transformer API。在此先感謝...
EDITS .....
在我來說,我必須使用XML文件來存儲信息。這就是爲什麼我不尋找共享首選項或Sqlite DB來存儲數據。謝謝。
根據要求,我必須將信息存儲在XMl文件中。我無法使用Sqlite或sharedpreferences。這就是爲什麼我正在尋找存儲在一個XML文件中...是不是可以用android中的xml文件來做到這一點? – JibW
是的,這是可能的,但過於複雜(正如你正在經歷)。持久數據的首選方式是SQLLite或SharedPrefs。祝你好運。 – Booger