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

我想写一些内容到一个XML文件。 为此,我创build了一个XML文件,并使用如下元素,属性和值来书写标签:

XmlSerializer serializer = Xml.newSerializer(); serializer.startTag(null, element); serializer.attribute(null, atbname, value); serializer.text(text); serializer.endTag(null, tag); 

如果我想添加一个带有新元素,新属性等的新标签,并且我在它之前的标签正在修改的标签的位置input元素。

我如何追加新的标签到之前添加的标签?

Solutions Collecting From Web of "如何在Android中添加XML中的标签?"

看看这个链接 。 它应该给你一个如何添加节点到你的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); } } 

在调用serializer.startDocument( )并调用serializer.endDocument()之前,可以根据需要创build任意数量的标记。 一旦你调用了endDocument,你的xml就完成了。 如果你已经在一个文件中写了这个xml,现在再次为任何types的值写入相同的xml创build代码,那么这个新的xml将覆盖这个以前的xml文件。 所以你会得到新插入标签的XML文件。 如果你想添加一些新的标签到以前存在的XML文件,然后首先parsingXML文件获取所有的内容,并创build另一个XML文件,这将首先从以前的XML获取数据,并处理它,然后添加您新插入的数据,以便您新创build的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); } } 

产量

 <?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> 

我真的不明白你的观点,但是对于我自己,我已经使用了这个例子,它工作得很好

 private String writeXml(List<Message> messages){ XmlSerializer serializer = Xml.newSerializer(); StringWriter writer = new StringWriter(); try { serializer.setOutput(writer); serializer.startDocument("UTF-8", true); serializer.startTag("", "messages"); serializer.attribute("", "number", String.valueOf(messages.size())); for (Message msg: messages){ serializer.startTag("", "message"); serializer.attribute("", "date", msg.getDate()); serializer.startTag("", "title"); serializer.text(msg.getTitle()); serializer.endTag("", "title"); serializer.startTag("", "url"); serializer.text(msg.getLink().toExternalForm()); serializer.endTag("", "url"); serializer.startTag("", "body"); serializer.text(msg.getDescription()); serializer.endTag("", "body"); serializer.endTag("", "message"); } serializer.endTag("", "messages"); serializer.endDocument(); return writer.toString(); } catch (Exception e) { throw new RuntimeException(e); } } 

你可以在这里阅读完整的文章

请检查这个链接,我用这个&它工作正常,也将解决您的问题。 http://www.anddev.org/write_a_simple_xml_file_in_the_sd_card_using_xmlserializer-t8350.html 。 是的,你也可以添加新的标签。