四种⽅法⽣成XML⽂件
1. DOM
public class DomTest {
public static void main(String[] args) throws Exception {
//创建⼀个DocumentBuilderFactory对象
DocumentBuilderFactory dbf = wInstance();
//创建⼀个DocumentBuilder对象
DocumentBuilder db = wDocumentBuilder();
//获取Document对象,代表着要⽣成的DOM树
Document document = db.newDocument();
//根节点添加进DOM树
Element bookstore = ateElement("bookstore");
document.appendChild(bookstore);
//根节点的⼦节点,并添加属性
Element book = ateElement("book");
bookstore.appendChild(book);
book.setAttribute("id","1");//添加属性
//⼦节点的⼦节点,添加⽂本内容
Element name = ateElement("name");
book.appendChild(name);
name.setTextContent("鲁宾逊漂流记");
/*DOM树转换成XML⽂件*/
/
/创建TransformerFactory对象,Factory为⼯⼚类,不能直接new对象,通过newInstance获取对象 TransformerFactory tff = wInstance();
//通过TransformerFactory对象获取Transformer对象
Transformer tf = wTransformer();
//设置⽣成的XML⽂件⾃动换⾏
tf.setOutputProperty(OutputKeys.INDENT, "yes");
//⽣成XML⽂件
}
}
2. SAX
上篇⽂章中将解析的XML⽂件内容存到了book类的集合中,所以这⾥通过集合进⾏⽣成XML⽂件
ArrayList<Book> bookList = parseXML();
//1..创建⼀个SAXTransformerFactory类的对象
SAXTransformerFactory stff = (SAXTransformerFactory) wInstance();
//2..通过SAXTransformerFactory类的对象创建TransformerHandler类的对象
TransformerHandler handler = wTransformerHandler();使用dom4j解析xml文件
//3..过TransformerHandler类的对象创建Transformer类的对象
Transformer tr = Transformer();
//4..通过Transformer类的对象对要⽣成的XML⽂件进⾏设置
//设置字符编码;是否换⾏
tr.setOutputProperty(OutputKeys.ENCODING, "utf-8");
tr.setOutputProperty(OutputKeys.INDENT, "yes");
/
/5..创建result对象
File f = new File("l");
if(!f.exists())
Result result = new StreamResult(new FileOutputStream(f));
//6..将handler和result对象相关联
handler.setResult(result);
//7..通过handler对象编写XML⽂件内容
handler.startDocument();
AttributesImpl attr = new AttributesImpl();
handler.startElement(null, null, "bookstore", attr);
for (Book book : bookList) {
attr.clear();
attr.addAttribute(null, null, "id", null, "1");
handler.startElement(null, null, "book", attr);
Name()!=null){
handler.startElement(null, null, "name", null);
handler.Name().toCharArray(), 0, Name().toCharArray().length);
Author()!=null){
handler.startElement(null, null, "author", null);
handler.Author().toCharArray(), 0, Author().toCharArray().length);
Year()!=null){
handler.startElement(null, null, "year", null);
handler.Year().toCharArray(), 0, Year().toCharArray().length);
if(String.Price())!=null){
handler.startElement(null, null, "price", null);
handler.characters(String.Price()).toCharArray(), 0, String.Price()).toCharArray().length);
Language()!=null){
handler.startElement(null, null, "language", null);
handler.Language().toCharArray(), 0, Language().toCharArray().length);
}
}
}
3. DOM4J⽣成RSS
RSS(简易信息聚合)是⼀种基于XML标准,在互联⽹上被⼴泛采⽤的内容包装和投递协议。
发布⼀个RSS⽂件后,这个RSS Feed中包含的信息就能直接被其他站点调⽤,⽽且由于这些数据都是标准的XML格式,所以也能在其他的终端和服务中使⽤,是⼀种描述和同步⽹站内容的格式。
//1..创建document对象,代表整个XML稳定
Document document = ateDocument();
//2..创建根节点rss
Element rss = document.addElement("rss");
//3..添加节点属性
rss.addAttribute("version", "2.0");
//4..⽣成⼦节点并添加节点内容
Element channel = rss.addElement("channel");
Element title = channel.addElement("title");
title.setText("新闻");
//5..设置格式(⾃动换⾏,缩进)
OutputFormat format = atePrettyPrint();
format.setEncoding("gbk");
//6..⽣成XML⽂件
XMLWriter writer = new XMLWriter(new FileOutputStream(new File("l")),format);
writer.write(document);
}
}
4. JDOM⽣成RSS
public class JDOMTest {
public static void main(String[] args) throws Exception {
//1..⽣成根节点,添加属性
Element rss = new Element("rss");
rss.setAttribute("version", "2.0");
//2..⽣成document对象
Document document = new Document(rss);
//3..⽣成⼦节点,添加节点内容
Element channel = new Element("channel");
rss.addContent(channel);
Element title = new Element("title");
title.setText("新闻");
channel.addContent(title);
//3..设置XML⽂件格式
Format format = PrettyFormat();
//3..⽣成XML⽂件
XMLOutputter out = new XMLOutputter(format);
out.output(document, new FileOutputStream("l"));
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论