`
SunShineBoy
  • 浏览: 45679 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JDOM生成百度新闻XML (一)

阅读更多
百度新闻规则样式页:http://news.baidu.com/newsop.html

首先要导入jdom 相关的包;接下来就是在后台写相关的信息:我用是struts,就以struts后台action为例生成相应的xml;

public String perform(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
/* 设置返回文件的类型,可以是xml,html等等 */
  response.setContentType("text/xml;charset=gb2312");
/**
*  不要让浏览器开辟缓存
*  Cache-Control  no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存
*  Expires属性是将页面缓存在客户端,在有效时间内用户第二次打开该页面,直接调用缓存的页面而不用再请求服务器.执行速度就快了.
*  Pragma no-cache本地就不会缓存,即每次请求的都是最新版本
*/
  response.setHeader("Cache-Control","no-cache");

/* 这个是从后台Bo读取的数据放在pagination */
Pagination pagination = newsBo.queryNews(1, 10);

/* Jdom开始 包括各个根节点 */
Element root,webSite,webMaster,updatePeri,item,title,link,description,text,image,headlineImg,
keywords,category,author,source,pubDate;       

root = new Element("document"); //生成根元素:

webSite = new Element("webSite"); //生成二级元素:                          

webMaster = new Element("webMaster"); //生成二级元素

updatePeri = new Element("updatePeri"); //生成二级元素

Document doc = new Document(root); //将根元素植入文档doc中
/* 设置二级元素webSite的值 */
webSite.setText("info.uns56.com");
/* 将二级元素webSite放到root目录下 */
root.addContent(webSite);

/* 设置二级元素webMaster的值 */
webMaster.setText("www.sunwu.com");
/* 将二级元素webMastere放到root目录下 */
root.addContent(webMaster);

/* 设置二级元素updatePeri的值 */
updatePeri.setText("60");
/* 将二级元素updatePeri放到root目录下 */
root.addContent(updatePeri);
/* 循环从数据库取出数据 */

for(int i = 0; i < pagination.getResult().size(); i++){
/* 把从数据库取出的数据转换成相应的java bean */
Note  notes = (Note) pagination.getResult().get(i);

    item = new Element("item");   //生成三级元素 以下同
    title = new Element("title");
    link =new Element("link");
    description =new Element("description");
    text =new Element("text");
    image =new Element("image");
    headlineImg =new Element("headlineImg");
    keywords =new Element("keywords");
    category =new Element("category");
    author =new Element("author");
    source =new Element("source");
    pubDate =new Element("pubDate");
/* 设置三级元素的值 */
title.setText(notes.getTitle());
link.setText(notes.getUrl());
description.setText(notes.getDigest());
/* 用apache下的一个类判断是否为空*/
if(StringUtils.isNotBlank(notes.getContent())){
/* 替换里面相应的html内容 */
String content = notes.getContent().replaceAll("<[^>]*>", "").replace("&nbsp;", "").replace("&ldquo;", "\"").replace("&rdquo;", "\"").replace("&lsquo;", "\'").replace("&rsquo;", "\'").replace("&lt;", "<").replace("&gt;", ">");
text.setText("<![CDATA["+content+"]]>");
}
image.setText("");
headlineImg.setText("");

/** 迭代循环出关键字
*  如果没有使用Iterator,遍历一个数组的方法是使用索引
*  eg:for(int i=0; i<array.size(); i++) { ... get(i) ... }
*  而访问一个链表(LinkedList)又必须使用while循环:
*  eg:while((e=e.next())!=null) { ... e.data() ... }
*/
Iterator words = notes.getWords().iterator();
StringBuffer sb = new StringBuffer();
if(words.hasNext()){
sb.append(words.next().toString());
while(words.hasNext()){
sb.append(' ').append(words.next());
}
}
keywords.setText(sb.toString());
/* 用map遍历session里面的东西 */
Map map = (Map)servlet.getServletContext().getAttribute("options");

/* 得到map里notes_type的值 转换成list */
List list =  (List) map.get("notes_type");
OptionItem opt=null;
for(Iterator it=list.iterator();it.hasNext();){
opt=(OptionItem)it.next();
if(opt.getItemKey().equals(notes.getType()))
category.setText(opt.getItemValue());
}


author.setText("呵呵网站");
source.setText("呵呵网站");
/* 把时间转换成 2008-10-10 15:02:19 格式 */
pubDate.setText((new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")).format(notes.getPublishDate()));
/* 读取系统配置文件 */
link.setText("http://"+SystemConfigHandler.getString("HEHE_NAME")+"/"+notes.getNoteId()+".htm");

/
item.addContent(title);
item.addContent(link);
item.addContent(description);
item.addContent(text);
item.addContent(image);
item.addContent(headlineImg);
item.addContent(keywords);
item.addContent(category);
item.addContent(author);
item.addContent(source);
item.addContent(pubDate);
root.addContent(item);

}

Format format = Format.getCompactFormat();

format.setEncoding("gb2312"); //设置xml文件的字符为gb2312

format.setIndent("    "); //设置xml文件的缩进为4个空格

XMLOutputter XMLOut = new XMLOutputter(format); //元素后换行一层元素缩四格
System.out.println(XMLOut.outputString(doc)); //在后台打印出xml文件

XMLOut.output(doc, response.getWriter()); //前台输出xml文件
XMLOut.output(doc, new FileOutputStream("D:\\newsXml.xml")); //在D盘下生成xml

}
1
0
分享到:
评论

相关推荐

    Jdom生成与解析XML

    一、JDOM生成XML 1. **导入JDOM库**: 首先,你需要在项目中引入JDOM库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.jdom &lt;artifactId&gt;jdom2 &lt;version&gt;2.0.6 ``` 2. **...

    Java实现Jdom生成xml

    Java实现Jdom生成解析xml,一般可以用到存储数据。比如我以前做过的ERP系统,权限初始化就用的解析XML,但是现在上传的只是生成XML。如果哪位需要解析XML,留个言。。。。

    Jdom 生成和解析XML字符串

    通过以上介绍,我们可以看到 JDOM 提供了一种非常便捷的方式来生成和解析 XML 字符串。无论是创建还是解析 XML 数据,都可以通过简单的几行代码实现。这对于需要频繁操作 XML 数据的应用程序来说,无疑是非常有价值...

    Java生成xml(jdom)

    以下是一个简单的例子,展示了如何使用JDOM生成一个包含中文字符的XML文档: ```java import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.output.Format; import org.jdom2.output....

    JDOM生成xml文档

    NULL 博文链接:https://newtime.iteye.com/blog/437109

    通过jdom生成xml

    在Java编程中,生成XML文件是一项常见的任务,用于数据存储、配置管理或数据交换。JDOM(Java Document Object Model)是一个流行的库,专门用于处理XML文档。本篇将详细介绍如何利用JDOM在Java中生成XML文件,以及...

    jdom从数据库和xml拿数据生成xml

    标题中的“jdom从数据库和xml拿数据生成xml”指的是使用Java DOM(JDOM)库来处理XML数据,包括从数据库获取数据并将其转化为XML格式,以及从已有的XML文件中提取信息。JDOM是一个纯Java的XML API,它提供了一种高效...

    jdom 读取XML 文件

    JDOM是Java中一个用于处理XML文档的库,它提供了一种高效且方便的方式来创建、读取、修改XML文件。本篇文章将深入探讨如何使用JDOM来读取XML文件。 首先,我们需要了解JDOM的基本概念。JDOM通过构建一棵DOM...

    jdom-1.1.zip jdom-1.1.jar jdom.jar jdom库 jdom操作xml

    在Java应用程序中,JDOM扮演着核心角色,允许开发者以面向对象的方式处理XML数据,极大地简化了XML的解析和生成过程。 JDOM-1.1是该库的一个版本,它包含了对XML标准的全面支持以及一些性能优化。`jdom-1.1.zip`是...

    DOM、SAX、DOM4J、JDOM、StAX生成XML并返回XML字符串形式

    生成XML字符串时,JDOM提供了一套直观的API来构造和序列化XML文档。 5. StAX (Streaming API for XML) StAX是Java提供的一个流式解析API,它介于DOM和SAX之间。像SAX一样,StAX也是事件驱动的,但它允许程序员以拉...

    使用JDOM解析XML文件

    在Java编程中,JDOM(Java Document Object Model)是处理XML的一种库,它提供了方便的方式来创建、修改和读取XML文档。本篇文章将深入探讨如何使用JDOM解析XML文件。 首先,我们需要理解JDOM的基本结构。JDOM通过...

    jdom.jar xml解析

    在Java中,有许多库可以帮助我们解析XML,其中JDOM是其中一个流行的库,专注于提供高效的XML处理功能。 **JDOM简介** JDOM(Java Document Object Model)是一个用纯Java编写的API,它提供了构建、读取和修改XML...

    jdom.jar解析xml

    jdom.jar解析xml用的 jdom.jar解析xml用的 jdom.jar解析xml用的

    Spring+iBatis+JDom递归生成XML树

    在IT行业中,构建一个能够递归生成XML树的系统是一项常见的任务,特别是在处理复杂的数据结构时。本项目结合了Spring、iBatis和JDom这三个强大的技术,它们各自扮演着不同的角色来实现这一目标。 首先,Spring是一...

    JDOM解析本地XML

    JDOM是Java中一个专门用来处理XML的库,它提供了一种高效、灵活且完全符合Java语言习惯的方式来读取、写入和操作XML文档。下面我们将详细探讨JDOM解析本地XML的相关知识点。 首先,JDOM的核心概念包括`Element`、`...

    使用jdom.jar生成xml

    XML(eXtensible Markup Language)...总之,JDOM.jar为Java开发者提供了一个强大且灵活的工具,可以方便地生成和操作XML文档。通过熟练掌握JDOM的API,你可以轻松地实现XML数据的创建、读取和修改,满足各种项目需求。

    用jdom解析xml文件

    在解析XML时,JDOM会将整个XML文档转换为一个Document对象,这个对象包含了一个根元素和其他子元素,这些元素又可以包含更多的元素和属性。 解析XML文件的基本步骤如下: 1. 引入JDOM库:确保项目中已经添加了JDOM...

    JDOM使用详解XML及实例

    **JDOM** 是一个专为Java设计的XML处理库,它提供了一种高效且便捷的方式来解析、创建、修改和序列化XML文档。JDOM通过利用Java语言的强大特性,如方法重载、集合和映射,将SAX和DOM的优点结合在一起,简化了XML处理...

    JDOM操作xml文件的xmlBean

    JDOM(Java Document Object Model)是一种基于Java的XML解析API,它提供了一种简便的方式来解析和操作XML文档。与传统的DOM相比,JDOM更加注重性能和易用性,避免了DOM中的一些冗余设计。JDOM的主要优势在于它具有...

    jdom从MYSQL导出XML文件

    JDOM是一个专为Java设计的XML处理库,它提供了简单、高效的API来读写XML文档。MySQL则是一种广泛使用的开源关系型数据库管理系统。 在描述中提到的博客链接可能提供了更详细的步骤和代码示例,但在此我会基于一般...

Global site tag (gtag.js) - Google Analytics