java创建xml dom_用java dom解析并生成一个新的xml

package com.lenovomobile.wap;

import com.lenovomobile.wap.domain.logic.WapFacade;

import com.lenovomobile.wap.help.Helper;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.Controller;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import org.xml.sax.SAXException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

import java.io.*;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLConnection;

import java.util.ArrayList;

/**

* Created by IntelliJ IDEA.

* User: wangqiaowqo

* Date: 2010-10-13

* Time: 14:35:46

* 该类的用途:.

*/

public class GenRSSnewsController implements Controller {

private WapFacade wap;

public void setWap(WapFacade wap) {

this.wap = wap;

}

static String news = "http://data.3g.sina.com.cn/api/index.php?wm=9007_1002&cid=14";

static String caijing = "http://data.3g.sina.com.cn/api/index.php?wm=9007_1002&cid=18";

static String tiyu = "http://data.3g.sina.com.cn/api/index.php?wm=9007_1002&cid=17";

static String yule = "http://data.3g.sina.com.cn/api/index.php?wm=9007_1002&cid=15";

public ModelAndView handleRequest(HttpServletRequest request,

HttpServletResponse response) throws Exception {

String id = request.getParameter("id");

if (Helper.isNull(id)) {

id = "news";

}

String RSSurl = news;

if(id.equals("news")){

RSSurl = news;

}

if(id.equals("caijing")){

RSSurl = caijing;

}

if(id.equals("tiyu")){

RSSurl = tiyu;

}

if(id.equals("yule")){

RSSurl = yule;

}

DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();

ArrayList list = new ArrayList();

//生成xml

//以下为定义Document有关变量

Document newdoc = null;

Element newroot = null;

DocumentBuilderFactory factory = null;

DocumentBuilder builder = null;

//以下为确定输出类型,定义输出变量

response.setContentType("text/xml;charset=GB2312");

try {

URL url = new URL(RSSurl);

URLConnection URLconnection = url.openConnection();

HttpURLConnection httpConnection = (HttpURLConnection) URLconnection;

int responseCode = httpConnection.getResponseCode();

if (responseCode == HttpURLConnection.HTTP_OK) {

InputStream in = httpConnection.getInputStream();

BufferedReader is = new BufferedReader(new InputStreamReader(in, "UTF-8"));

StringBuffer buffer = new StringBuffer();

String line = "";

while ((line = is.readLine()) != null) {

buffer.append(line);

}

String str = buffer.toString();

//String str = new String(buffer.toString().getBytes("ISO-8859-1"), "UTF-8");

ByteArrayInputStream stream = new ByteArrayInputStream(str.getBytes("UTF-8"));

in = stream;

DocumentBuilder dombuilder = domfac.newDocumentBuilder();

Document doc = dombuilder.parse(in);

Element root = doc.getDocumentElement();

NodeList nodes = root.getChildNodes();

ArrayList newitems = new ArrayList();

if (nodes != null) {

for (int i = 0; i < nodes.getLength(); i++) {

Node channel = nodes.item(i);

if (channel.getNodeName().equals("channel")) {

NodeList items = channel.getChildNodes();

if (items != null) {

for (int j = 0; j < items.getLength(); j++) {

Node item = items.item(j);

if (item.getNodeName().equals("item")) {

NodeList itemlist = item.getChildNodes();

if (itemlist != null) {

Item newitem = new Item();

for (int k = 0; k < itemlist.getLength(); k++) {

Node tmp = itemlist.item(k);

if (tmp.getNodeName().equals("title")) {

newitem.setTitle(tmp.getTextContent());

}

if (tmp.getNodeName().equals("description")) {

newitem.setDexcription(tmp.getTextContent());

}

}

if (newitem.getDexcription() != null && newitem.getTitle() != null) {

newitems.add(newitem);

}

}

}

}

}

}

}

}

list = newitems;

}

} catch (ParserConfigurationException e) {

e.printStackTrace();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (SAXException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

try {

factory = DocumentBuilderFactory.newInstance();

builder = factory.newDocumentBuilder();

newdoc = builder.newDocument();

newroot = newdoc.createElement("rss");

newroot.setAttribute("version", "2.0");

newdoc.appendChild(newroot);

Element channel = newdoc.createElement("channel");

newroot.appendChild(channel);

for (int m = 0; m < list.size(); m ++) {

Item newitem = (Item) list.get(m);

Element item = newdoc.createElement("item");

channel.appendChild(item);

Element title = newdoc.createElement("title");

item.appendChild(title);

title.setTextContent(newitem.getTitle());

Element description = newdoc.createElement("description");

item.appendChild(description);

description.setTextContent(newitem.getDexcription());

}

} catch (Exception e) {

//out.println("出错提示:"+e.getMessage());

}

//PrintWriter out = response.getWriter();

TransformerFactory tf = TransformerFactory.newInstance();

Transformer t = tf.newTransformer();

DOMSource dom = new DOMSource(newdoc);

StreamResult sr = new StreamResult(response.getOutputStream());

t.setOutputProperty("encoding", "GB2312");

//StringWriter sw=new StringWriter();

//StreamResult sr=new StreamResult(sw);

t.transform(dom, sr);

//out.flush();

//out.close();

return null;

}

}

class Item {

private String title;

private String dexcription;

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getDexcription() {

return dexcription;

}

public void setDexcription(String dexcription) {

this.dexcription = dexcription;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值