dom4j在指定位置新增节点

欢迎光临笔者博客[url]http://www.lovestblog.cn[/url]
最近两天本人在为本博实现rss发布和订阅,本来是想在前端实现xml的生成和修改,因为用as3的E4X操作xml比较方便,但是后面发现不能为元素设置CDATA值,于是只好作罢,便只能依靠后台的java来实现此功能了,当然操作xml的话,我首先想到了dom4j,dom4j操作xml还是比较方便的,即可以轻松实现我们的CDATA设置,也可以为我们任意位置插入元素提供了实现,对于在指定位置新增节点开始我有点蒙了,后面通过网上搜索资源加之自己的一些理解,而实现了此功能,下面展示了部分代码供今后参考吧:
public static int createXMLFile(String filename,List list){
/** 返回操作结果, 0表失败, 1表成功 */
int returnValue = 0;
Document document = DocumentHelper.createDocument();
Element rssElement = document.addElement("rss");
rssElement.addAttribute("version", "2.0");
Element channelElement = rssElement.addElement("channel");
Element titleElement = channelElement.addElement("title");
titleElement.setText("你假笨(nijiaben)心情技术博客");

Element linkElement = channelElement.addElement("link");
linkElement.setText("http://www.lovestblog.cn");

Element descriptionElement = channelElement.addElement("description");
descriptionElement.setText("专注于Java,Flex技术开发研究");

Element languageElement = channelElement.addElement("language");
languageElement.setText("zh-cn");

Element lastBuildDateElement = channelElement.addElement("lastBuildDate");
lastBuildDateElement.setText(new java.text.SimpleDateFormat("yyyy-mm-dd hh:mm:ss",Locale.CHINA).format(((ArticleInfo)(list.get(0))).getCreateTime()));

for(int i=list.size()-1;i>0;i--){
ArticleInfo ainfo=(ArticleInfo)(list.get(i));
Element itemElement = channelElement.addElement("item");
Element title1Element = itemElement.addElement("title");
title1Element.setText(ainfo.getTitle());
Element description1Element = itemElement.addElement("description");
int maxLen=5000;
if(ainfo.getRssContent().length()<5000){
maxLen=ainfo.getRssContent().length();
}
description1Element.addCDATA(ainfo.getRssContent().substring(0, maxLen));
Element pubDate=itemElement.addElement("pubDate");
pubDate.setText(new java.text.SimpleDateFormat("yyyy-mm-dd hh:mm:ss",Locale.CHINA).format(ainfo.getCreateTime()));
Element link1Element=itemElement.addElement("link");
link1Element.setText("http://www.lovestblog.cn");
}
try{
/** 将document中的内容写入文件中 */
XMLWriter writer = new XMLWriter(new FileOutputStream(path+filename));
writer.write(document);
writer.close();
/** 执行成功,需返回1 */
returnValue = 1;
}catch(Exception ex){
ex.printStackTrace();
}
return returnValue;
}

你可能感兴趣的:(java)