📄 xmlutil.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 + -