如何在Android中附加XML中的标签?

pra*_*gai 7 xml android

我想写一些内容到XML文件.为此我创建了一个XML文件和带有元素,属性和值的写标签,其中包含以下数据:

XmlSerializer serializer = Xml.newSerializer();
serializer.startTag(null, element);
serializer.attribute(null, atbname, value);
serializer.text(text);
serializer.endTag(null, tag);
Run Code Online (Sandbox Code Playgroud)

如果我想添加一个带有新元素,新属性等的新标签,我会在之前使用标签修改的标签处输入元素.

如何将新标签附加到先前附加的标签?

Sun*_*hoo 17

你可以在调用之后serializer.startDocument(和调用之前创建任意数量的标签serializer.endDocument().一旦调用了endDocument,你的xml就完成了.如果你已经在文件中编写了这个xml,现在再次为xml创建编写相同的代码,并且在任何类型的值中都有更改,那么新的xml将覆盖以前的xml文件.因此,您将获得具有新插入标记的xml文件.如果你想在之前存在的xml文件中添加一些新标签,那么首先解析该xml文件获取所有内容并创建另一个xml文件,该文件首先从先前的xml获取数据并处理它,然后添加新插入的数据,以便新创建的xml将包含所有内容(包括以前的数据以及新数据)

private String writeXml(){
    XmlSerializer serializer = Xml.newSerializer();
    StringWriter writer = new StringWriter();
    try {
        serializer.setOutput(writer);
        serializer.startDocument("UTF-8", true);
        serializer.startTag("", "messages");
        serializer.attribute("", "number", "value of attribute");

            serializer.startTag("", "title");
            serializer.text(1+" title");
            serializer.endTag("", "title");
            serializer.startTag("", "title");
            serializer.text(2+" text");
            serializer.endTag("", "title");


        serializer.endTag("", "messages");
        serializer.startTag("", "messages1");
        serializer.attribute("", "number", "value of attribute");

            serializer.startTag("", "title");
            serializer.text(1+" title");
            serializer.endTag("", "title");
            serializer.startTag("", "title");
            serializer.text(2+" text");
            serializer.endTag("", "title");


        serializer.endTag("", "messages1");
        serializer.endDocument();
        return writer.toString();
    } catch (Exception e) {
        throw new RuntimeException(e);
    } 
}
Run Code Online (Sandbox Code Playgroud)

产量

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<messages number="value of attribute">
<title>1 title</title>
<title>2 text</title>
</messages>
<messages1 number="value of attribute">
<title>1 title</title>
<title>2 text</title>
</messages1>
Run Code Online (Sandbox Code Playgroud)


Jak*_*key 1

看看这个链接。它应该让您了解如何向 XML 添加节点。这是一个片段。

public DomXmlExample() {
        try {
            /////////////////////////////
            //Creating an empty XML Document

            //We need a Document
            DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
            Document doc = docBuilder.newDocument();

            ////////////////////////
            //Creating the XML tree

            //create the root element and add it to the document
            Element root = doc.createElement("root");
            doc.appendChild(root);

            //create a comment and put it in the root element
            Comment comment = doc.createComment("Just a thought");
            root.appendChild(comment);

            //create child element, add an attribute, and add to root
            Element child = doc.createElement("child");
            child.setAttribute("name", "value");
            root.appendChild(child);

            //add a text element to the child
            Text text = doc.createTextNode("Filler, ... I could have had a foo!");
            child.appendChild(text);

            /////////////////
            //Output the XML

            //set up a transformer
            TransformerFactory transfac = TransformerFactory.newInstance();
            Transformer trans = transfac.newTransformer();
            trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
            trans.setOutputProperty(OutputKeys.INDENT, "yes");

            //create string from xml tree
            StringWriter sw = new StringWriter();
            StreamResult result = new StreamResult(sw);
            DOMSource source = new DOMSource(doc);
            trans.transform(source, result);
            String xmlString = sw.toString();

            //print xml
            System.out.println("Here's the xml:\n\n" + xmlString);

        } catch (Exception e) {
            System.out.println(e);
        }
    }
Run Code Online (Sandbox Code Playgroud)