⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlutil.java

📁 博克后台的开发,有很多使用的方法和例子可以提供给大家学习
💻 JAVA
字号:
package com.webpublish.util;

import java.io.File;
import java.io.FileWriter;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import org.dom4j.DocumentHelper;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

import com.webpublish.config.ComStatic;
import com.webpublish.dbutil.GrainOraViewData;
import com.webpublish.util.DateUtil;

/**
 * @author CE
 * 
 */
public class XmlUtil {

	/**
	 * 建立一个XML文档,文档名由输入属性决定
	 * 
	 * @param filename
	 *            需建立的文件名
	 * @return 返回操作结果, false表失败, true表成功
	 */

	public synchronized boolean createXmlGrain(String[] fieldsArr,
			GrainOraViewData grainDate, String[][] DataArr, String filename) {

		/** 返回操作结果, false表失败, true表成功 */
		boolean returnValue = false;
		boolean controlBreak = false;

		/** 建立document对象 */
		Document document = DocumentHelper.createDocument();

		/** 建立XML文档的根rss 添加rss相关属性 */
		Element rss = document.addElement("rss");
		rss.addAttribute("version", "2.0");
		rss.addAttribute("xmlns:YidabaImage", "http://image.yidaba.com/");

		/** 加入一个channel节点 */
		Element channel = rss.addElement("channel");

		/** 加入title节点 */
		Element title = channel.addElement("title");

		/** 为title设置内容 */
		title.setText(grainDate.WZKLGNAME);

		/** 类似的完成节点加入操作 */
		Element link = channel.addElement("link");
		link.setText(grainDate.WZKLPPURL);

		Element description = channel.addElement("description");
		description.setText("网站自动发布颗粒");

		Element pubDate = channel.addElement("pubDate");
		pubDate.setText(DateUtil.formatRfc822(new Date()));

		Element lastBuildDate = channel.addElement("lastBuildDate");
		lastBuildDate.setText(DateUtil.formatRfc822(new Date()));

		Element category = channel.addElement("category");
		category.setText(grainDate.WZKLGTYPE);

		Element filePath = channel.addElement("filePath");
		filePath.setText(grainDate.WZKLCPATH);

		Element fileName = channel.addElement("fileName");
		fileName.setText(grainDate.WZKLCNAME);

		Element pubMode = channel.addElement("pubMode");
		pubMode.setText(grainDate.WZKLPMOD);

		Element pubPeriod = channel.addElement("pubPeriod");
		pubPeriod.setText(grainDate.KLZDPTSEQ);

		/** 加入control节点 */
		Element control = channel.addElement("control");

		/** 加入control子节点 */
		Element templateMacro = control.addElement("templateMacro");
		templateMacro.setText(grainDate.KLMBTMECRO);

		Element template = control.addElement("template");
		template.setText(grainDate.KLMBLTEMP);

		Element noTemplate = control.addElement("noTemplate");
		noTemplate.setText(grainDate.KLMBNOLTEMP);

		Element noCycNumber = control.addElement("noCycNumber");
		noCycNumber.setText(grainDate.KLZDNOLNUM);

		Element cycNumber = control.addElement("cycNumber");
		cycNumber.setText(grainDate.KLZDLRNUM);

		Element cycDegree = control.addElement("cycDegree");
		cycDegree.setText(grainDate.KLZDLNUM);

		String[] xmlItem = { "link", "title", "ImageUrl" };

		for (int i = 0; i < DataArr.length; i++) {

			/** 加入item节点 */
			Element item = channel.addElement("item");

			/** 加入item子节点 */
			for (int j = 0; j < fieldsArr.length; j++) {
				if (j <= xmlItem.length) {
					if (!DataArr[i][j + 1].equals("")) {
						Element itemName = item.addElement(xmlItem[j]);
						itemName.setText(DataArr[i][j + 1]);
					} else {
						controlBreak = true;
					}
				} else {
					if (!DataArr[i][j + 1].equals("")) {
						Element itemName = item.addElement(fieldsArr[j]);
						itemName.setText(DataArr[i][j + 1]);
					} else {
						controlBreak = true;
					}
				}
			}
			if(controlBreak){
				break;
			}
		}

		/** 执行成功,需返回true */
		returnValue = formatXMLFile(document, grainDate.WZKLCPATH, filename
				+ ".xml");
		ComStatic.GrainLog.msgLog("xml文件 " + filename + ".xml" + " 已成功生成!");
		return returnValue;
	}

	/**
	 * 
	 * 格式化XML文档,并解决中文问题
	 * 
	 * @param filename
	 * @return
	 * 
	 */

	public boolean formatXMLFile(Document document,
			String filepath, String filename) {
		boolean returnState = false;
		try {
			XMLWriter writer = null;

			/** 格式化输出,类型IE浏览一样 */
			OutputFormat format = OutputFormat.createPrettyPrint();

			/** 指定XML编码 */
			format.setEncoding("GB2312");
			File pathTemp = new File(filepath);
			if (!pathTemp.isDirectory()) {
				pathTemp.mkdirs();
			}
			writer = new XMLWriter(
					new FileWriter(new File(filepath + filename)), format);
			writer.write(document);
			writer.close();

			/** 执行成功,需返回true */
			returnState = true;

		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return returnState;
	}

	public synchronized Iterator getItemIterator(Document doc, String xPath) {
		List list = doc.selectNodes(xPath); 
		Iterator iter = list.iterator();
		return iter;
	}

	/**
	 * 定位xml,看其是否存在
	 * 
	 * @param xPath
	 *            相对路径
	 * @return 成功返回doc
	 * @throws Exception
	 */
	public Document openXml(String xPath) {
		Document doc = null;
		try {
			SAXReader saxReader = new SAXReader();
			doc = saxReader.read(xPath);
		} catch (Exception ex) {
			System.out.println("Read XML Error-->>" + ex.toString());
		}
		return doc;
	}

	public static void main(String[] args) {
		try {
			Document doc = ComStatic.xmlUtil.openXml("d://temp/single.xml");
			// Iterator iter = ComStatic.xmlUtil.getItemIterator(doc);
			System.out.println("start!!");

			System.out.println(doc.selectSingleNode(
					"/rss/channel/control/noCycNumber").getStringValue());

			System.out.println("end !");

		} catch (Exception ex) {

			ex.printStackTrace();
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -