您的位置:首页 > 编程语言 > Java开发

Java四种生成xml文件的方法

2016-05-01 17:10 543 查看
学习来源于视频: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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: