如何用Java为Android编写XML内容



我需要一点帮助…我想在点击保存按钮时将分数写入XML文件,并在下次应用程序启动时自动检索保存的分数。

我写了下面的代码来保存分数,但不幸的是它不工作。没有创建任何文件:

    public void savescore() throws TransformerException, ParserConfigurationException {
    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
    Document xmlDoc = docBuilder.newDocument();
    Element scores = xmlDoc.createElement("score");
    Element adityag= xmlDoc.createElement("aditya");
    adityag.appendChild(xmlDoc.createTextNode(adityas.getText().toString()));
    Element ameyg= xmlDoc.createElement("amey");
    ameyg.appendChild(xmlDoc.createTextNode(ameys.getText().toString()));
    Element akshadag= xmlDoc.createElement("akshada");
    akshadag.appendChild(xmlDoc.createTextNode(akshadas.getText().toString()));
    Element anirudhg= xmlDoc.createElement("anirudh");
    anirudhg.appendChild(xmlDoc.createTextNode(anirudhs.getText().toString()));
    Element aashig= xmlDoc.createElement("aashi");
    aashig.appendChild(xmlDoc.createTextNode(aashis.getText().toString()));
    Element dhvanig= xmlDoc.createElement("dhvani");
    dhvanig.appendChild(xmlDoc.createTextNode(dhvanis.getText().toString()));
    Element mering= xmlDoc.createElement("merin");
    mering.appendChild(xmlDoc.createTextNode(merins.getText().toString()));
    Element swapnilg= xmlDoc.createElement("swapnil");
    swapnilg.appendChild(xmlDoc.createTextNode(swapnils.getText().toString()));
    Element architg= xmlDoc.createElement("archit");
    architg.appendChild(xmlDoc.createTextNode(archits.getText().toString()));
    Element shreyag= xmlDoc.createElement("shreya");
    shreyag.appendChild(xmlDoc.createTextNode(shreyas.getText().toString()));
    scores.appendChild(adityag);
    scores.appendChild(ameyg);
    scores.appendChild(akshadag);
    scores.appendChild(anirudhg);
    scores.appendChild(aashig);
    scores.appendChild(dhvanig);
    scores.appendChild(mering);
    scores.appendChild(shreyag);
    scores.appendChild(swapnilg);
    scores.appendChild(architg);
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    DOMSource source = new DOMSource(xmlDoc);
    StreamResult result = new StreamResult(new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + "userData.xml"));
    transformer.transform(source, result);
}

我的代码出了什么问题?

编辑:添加@Gabriella建议的权限后,现在创建空XML文件

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

将写入外部存储的权限添加到您的清单文件

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

或者看看这个问题:如何在android

中创建XML文件编辑:

我认为你的代码应该看起来像这样,因为你现在是附加空元素到xml文档:

public void savescore() throws TransformerException, ParserConfigurationException {
    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
    Document xmlDoc = docBuilder.newDocument();
    Element scores = xmlDoc.createElement("score");
    Element adityag= xmlDoc.createElement("name1");
    adityag.appendChild(xmlDoc.createTextNode(name1.getText().toString()));
    Element ameyg= xmlDoc.createElement("name2");
    ameyg.appendChild(xmlDoc.createTextNode(name2.getText().toString()));
    Element akshadag= xmlDoc.createElement("name3");
    akshadag.appendChild(xmlDoc.createTextNode(name3.getText().toString()));
    Element anirudhg= xmlDoc.createElement("name4");
    anirudhg.appendChild(xmlDoc.createTextNode(name4.getText().toString()));
    Element aashig= xmlDoc.createElement("name5");
    aashig.appendChild(xmlDoc.createTextNode(aname5.getText().toString()));
    Element dhvanig= xmlDoc.createElement("name6");
    dhvanig.appendChild(xmlDoc.createTextNode(name6.getText().toString()));
    Element mering= xmlDoc.createElement("name7");
    mering.appendChild(xmlDoc.createTextNode(name7.getText().toString()));
    Element swapnilg= xmlDoc.createElement("name8");
    swapnilg.appendChild(xmlDoc.createTextNode(name8.getText().toString()));
    Element architg= xmlDoc.createElement("name9");
    architg.appendChild(xmlDoc.createTextNode(name9.getText().toString()));
    Element shreyag= xmlDoc.createElement("name10");
    shreyag.appendChild(xmlDoc.createTextNode(name10.getText().toString()));
    scores.appendChild(adityag);
    scores.appendChild(ameyg);
    scores.appendChild(akshadag);
    scores.appendChild(anirudhg);
    scores.appendChild(aashig);
    scores.appendChild(dhvanig);
    scores.appendChild(mering);
    scores.appendChild(swapnilg);
    scores.appendChild(architg);
    scores.appendChild(shreyag);
    xmlDoc.appendChild(scores);
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    DOMSource source = new DOMSource(xmlDoc);
    StreamResult result = new StreamResult(new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + "RummyScore" + "/" + "userData.xml"));
    transformer.transform(source, result);
}

是name1, nam2, name3等TextViews?

最新更新