学习来源于视频:imooc网
1,DOM
//创建一个DocumentBuilderFactory对象
DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
//创建一个DocumentBuilder对象
try {
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.newDocument();
document.setXmlStandalone(true);
Element bookstore = document.createElement("bookStore");
//向bookStore根节点中添加子节点
Element book = document.createElement("book");
book.setAttribute("id", "1");
Element name = document.createElement("name");
name.setTextContent("sdingba");
book.appendChild(name);
//将book节点添加到bookstore中
bookstore.appendChild(book);
//将bookstore节点(已经包含book),添加到dom树中
document.appendChild(bookstore);
//生成xml对象
//创建TransformerFactory
TransformerFactory tff = TransformerFactory.newInstance();
//创建Transformer对象
Transformer tf = tff.newTransformer();
//设置 生成的xml文件是否换行。
tf.setOutputProperty(OutputKeys.INDENT,"yes");
tf.transform(new DOMSource(document), new StreamResult(new File("book.xml")));
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
2,SAX
//1,创建 一个TransformerFactory的类的对象
SAXTransformerFactory tff = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
try {
//2,通过SAXTransformerFactory对象创建一个TransformerHandler对象
TransformerHandler handler = tff.newTransformerHandler();
//3.通过handler对象创建一个Transformor
Transformer tr = handler.getTransformer();
//4,通过对象,对生成的xml文件进行设置
tr.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
tr.setOutputProperty(OutputKeys.INDENT, "yes");
//5,创建一个result对象
File file = new File("book2.xml");
if (!file.exists()) {
file.createNewFile();
}
//6,创建resulet对象,并且是的与handler关联
Result result = new StreamResult(new FileOutputStream(file));
handler.setResult(result);
//7.利用handler对象进行xml文件内容的编写
//打开document
handler.startDocument();
AttributesImpl attr = new AttributesImpl();
handler.startElement("", "", "bookstart", attr);
attr.clear();
for(){} 在for循环中添加数据。对了List数值进行遍历
//添加一本书
attr.addAttribute("","","id","","1");
handler.startElement("", "", "book", attr);
//创建name节点
attr.clear();
handler.startElement("", "", "name", attr);
handler.characters("你是我的女神".toCharArray(),0,"你是我的女神".length());
handler.endElement("","","name");
// 。。。。。
handler.endElement("","","book");
handler.endElement("","","bookstart");
//关闭
handler.endDocument();
} catch (TransformerConfigurationException e) {
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
3,DOM4J
//1,创建 document对象,代表整个xml文档
Document document = DocumentHelper.createDocument();
//2,创建 根节点
Element rss = document.addElement("rss");
//向rrs中添加属性
rss.addAttribute("version", "2.0");
//3,生成子节点和节点内容
Element channel = rss.addElement("channel");
Element title = channel.addElement("title");
title.setText("国内新闻");
//要在下面设置是否转义
// title.setText("<![CDATA[国内新闻]]>");
//设置xml的格式
OutputFormat format =
OutputFormat.createPrettyPrint();
// format.setEncoding("GBK");设置编码格式
//4,生成xml文件
File file = new File("rss.xml");
XMLWriter write = null;
try {
write = new XMLWriter(new FileOutputStream(file),format);
//设置是否转义,默认值是true,代表转义
write.setEscapeText(false);
write.write(document);
write.close();
} catch (IOException e) {
e.printStackTrace();
}
4,JDOM
//生成一个根节点
Element rss = new Element("rss");
rss.setAttribute("version", "2.0");
//生成一个document对象
Document document = new Document(rss);
Element channel = new Element("channel");
rss.addContent(channel);
Element title = new Element("title");
// title.setText("国内最新新闻");
title.setText("<![CDATA[新闻联盟]]>");
channel.addContent(title);
Format format = Format.getCompactFormat();
format.setIndent("");
format.setEncoding("UTF-8");
// format.setTextMode(Format.TextMode.TRIM);
// format.setOmitEncoding(false);
// format.setSpecifiedAttributesOnly(true);
//4,创建xmlOutputer对象
XMLOutputter outputer = new XMLOutputter();
//5.利用outputer对象,将document转化成一个流
try {
outputer.output(document, new FileOutputStream(new File(
"rssjdom.xml"
)));
} catch (IOException e) {
e.printStackTrace();
}