如何解决如何在Android中以XML附加标签?
| 我想将一些内容写入XML文件。为此,我创建了一个XML文件,并使用元素,属性和值以及一些数据编写了标签,如下所示:XmlSerializer serializer = Xml.newSerializer();
serializer.startTag(null,element);
serializer.attribute(null,atbname,value);
serializer.text(text);
serializer.endTag(null,tag);
如果我想添加带有新元素,新属性等的新标签,并且在该元素的标签位置输入该元素,则该元素将使用先前的标签进行修改。
如何将新标签附加到以前附加的标签上?
解决方法
看一下这个链接。它应该使您了解如何向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()
之前,可以创建任意数量的标签。调用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(\"\",\"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\",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(\"\",\"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。
是的,您也可以添加新标签。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。