java XML导出

来源:互联网 发布:mac qq怎么截图 编辑:程序博客网 时间:2024/06/03 14:18


//**********************主要代码**************************

package cn.com.ctdos.info.util;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;


import org.w3c.dom.CDATASection;
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 cn.com.ctdos.common.util.Parameter;
import cn.com.ctdos.info.model.InfoCommonModel;


/**
 * XmlDom操作
 * @Description: DomFactory.java
 * @author zhanghui
 * @createDate 2017-1-10 下午5:38:53
 */
public class DomFactory {

/**
* 获取xml文件生成Document对象
* @Description: DomFactory.java
* @author zhanghui
* @createDate 2017-1-10 下午5:51:01
* @return
*/
public Document createDocument(){
Document document = null;
try {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
String prjPath = Parameter.absoluteProPath;
FileInputStream  xmlInputStream = new FileInputStream(prjPath+"xml\\template\\模板.xml");//xml模板路径
DocumentBuilder builder = builderFactory.newDocumentBuilder();
document = builder.parse(xmlInputStream);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return document;
}

/**
* 保存xml文件
* @Description: DomFactory.java
* @author zhanghui
* @createDate 2017-1-10 下午5:50:25
* @param document
* @param path 保存文件路径
*/
public void saveXml(Document document,String path){
TransformerFactory transformerFactory = TransformerFactory.newInstance();
try {
Transformer transformer = transformerFactory.newTransformer();
DOMSource domSource = new DOMSource(document);
StreamResult streamResult = new StreamResult(new FileOutputStream(path));
transformer.transform(domSource, streamResult);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
}

/**
* 修改节点内容
* @Description: DomFactory.java
* @author zhanghui
* @createDate 2017-1-10 下午5:53:46
*/
public void editText(Document document,String path,InfoCommonModel comm){
Element root = document.getDocumentElement();
NodeList stuNodeList = root.getChildNodes();  
   for(int i = 0;i < stuNodeList.getLength();i ++){  
       Node stuInforNode = stuNodeList.item(i);  
       if(stuInforNode.getNodeType() == Node.ELEMENT_NODE){  
           NodeList stuNode = stuInforNode.getChildNodes();  
           for(int j = 0;j < stuNode.getLength();j ++){  
               Node stuNode2 = stuNode.item(j);
               if(stuNode2.getNodeName().equals("PROPERTIES")){
               NodeList stuNodeList2=stuNode2.getChildNodes();
               for (int k = 0;k < stuNodeList2.getLength();k ++) {
               Node stuNode3 = stuNodeList2.item(k);
               if(!stuNode3.getNodeName().equals("#text")){
               editNode(document,stuNode3,comm);
               }
}
               }
           }  
       }  
   }  
saveXml(document,path);
}

/**
* 修改节点内容
* @Description: DomFactory.java
* @author zhanghui
* @createDate 2017-1-11 上午11:50:56
* @param node
* @param com
*/
private void editNode(Document document,Node node,InfoCommonModel com){
SimpleDateFormat sdf =   new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// if(node.getNodeName().equals("DOCID"))//
// node.setTextContent("70427");
// else if(node.getNodeName().equals("DOCVERSION"))//版本号
// node.setTextContent("0");
// else if(node.getNodeName().equals("DOCTYPE"))//
// node.setTextContent("20");
// else
if(node.getNodeName().equals("DOCPUBTIME"))//发布日期
node.setTextContent(sdf.format(com.getFinishDate()));
else if(node.getNodeName().equals("CRUSER"))//发布人
setCDATA(document,node,com.getFinishUserName());
else if(node.getNodeName().equals("CRTIME"))//创建时间
node.setTextContent(sdf.format(com.getCreateDate()));
// else if(node.getNodeName().equals("DOCFLAG"))//
// node.setTextContent("0");
// else if(node.getNodeName().equals("ATTRIBUTE"))//属性
// setCDATA(document,node," ");
// else if(node.getNodeName().equals("ATTACHPIC"))//附件照片
// node.setTextContent("0");
// else if(node.getNodeName().equals("DOCLINK"))//链接
// {
// if(isNull(com.getInfoLink())){
// setCDATA(document,node,com.getInfoLink().getUrl());
// }else{
// setCDATA(document,node," ");
// }
// }
// else if(node.getNodeName().equals("DOCFILENAME"))//附件名称
// setCDATA(document,node," ");
else if(node.getNodeName().equals("DOCCHANNEL"))//
node.setTextContent("8202");
else if(node.getNodeName().equals("DOCTITLE"))//标题
setCDATA(document,node,com.getTitle());
else if(node.getNodeName().equals("DOCPEOPLE"))//人
setCDATA(document,node,com.getTitle());
// else if(node.getNodeName().equals("DOCSOURCENAME"))//源名称
// setCDATA(document,node," ");
// else if(node.getNodeName().equals("DOCSTATUS"))//状态
// node.setTextContent("10");
else if(node.getNodeName().equals("DOCCONTENT"))//文本内容
{
if(isNull(com.getInfoArticle())){
String val=com.getInfoArticle().getContent();
val=val.replaceAll("</?[^>]+>", "");//剔出<html>的标签
val=val.replaceAll("(?m)^\\s*$(\\n|\\r\\n)", "");//剔出空行
setCDATA(document,node,val); 
}else{
setCDATA(document,node," ");
}
}
else if(node.getNodeName().equals("DOCHTMLCON"))//含html内容
{
if(isNull(com.getInfoArticle())){
String val=com.getInfoArticle().getContent();
if(val.indexOf("<?xml:namespace prefix = \"o\" />")!=-1){
val=val.replace("<?xml:namespace prefix = \"o\" />", "");
}
setCDATA(document,node,val);
}else{
setCDATA(document,node," ");
}
}
// else if(node.getNodeName().equals("DOCWORDSCOUNT"))//单词个数
// node.setTextContent("308");
// else if(node.getNodeName().equals("DOCABSTRACT"))//摘要
// setCDATA(document,node," ");
else if(node.getNodeName().equals("DOCKEYWORDS"))//关键字
{
if(isNull(com.getInfoArticle())){
setCDATA(document,node,com.getInfoArticle().getKeyWord());
}else{
setCDATA(document,node," ");
}
}
// else if(node.getNodeName().equals("DOCAUTHOR"))//作者
// {
// if(isNull(com.getInfoArticle())){
// setCDATA(document,node,com.getInfoArticle().getAuthor());
// }else{
// setCDATA(document,node," ");
// }
// }
// else if(node.getNodeName().equals("DOCRELTIME"))//实时
// node.setTextContent(sdf.format(com.getFinishDate()));
// else if(node.getNodeName().equals("TITLECOLOR"))//标题颜色
// setCDATA(document,node," ");
// else if(node.getNodeName().equals("SUBDOCTITLE"))//子文档的标题
// setCDATA(document,node," ");
// else if(node.getNodeName().equals("CHNLNAME"))//频道名称
// {
// if(isNull(com.getInfoArticle())){
// setCDATA(document,node,com.getInfoArticle().getOriginal());
// }else{
// setCDATA(document,node," ");
// }
// }


/**
* 添加CDATA(解析忽略)节点
* @Description: DomFactory.java
* @author zhanghui
* @createDate 2017-1-11 下午4:04:14
* @param document
* @param node
* @param val 添加文本
*/
private void setCDATA(Document document,Node node,String val){
CDATASection cdata = document.createCDATASection(val);
node.appendChild(cdata);
}

/**
* 是否为空
* @Description: DomFactory.java
* @author zhanghui
* @createDate 2017-1-11 上午11:51:13
* @param obj
* @return
*/
private boolean isNull(Object obj){
if(obj!=null){
return true;
}else{
return false;
}
}


}



//*****************调用*********************

DomFactory dom=new DomFactory();
Document document=dom.createDocument();
String path = Parameter.absoluteProPath+"xml\\export\\"+infoCommonModel.getInfoId()+".xml";
dom.editText(document, path, infoCommonModel);


//********************xml模板***********************

<?xml version="1.0" encoding="UTF-8"?>


<WCMDOCUMENTS>
  <WCMDOCUMENT Version="6.0">
    <PROPERTIES>
      <DOCID>70427</DOCID>
      <DOCVERSION>0</DOCVERSION>
      <DOCTYPE>20</DOCTYPE>
      <DOCPUBTIME>2017-01-06 10:28:28</DOCPUBTIME>
      <CRUSER><![CDATA[]]></CRUSER>
      <CRTIME>2017-01-04 10:40:33</CRTIME>
      <DOCFLAG>0</DOCFLAG>
      <ATTRIBUTE/>
      <ATTACHPIC>0</ATTACHPIC>
      <DOCLINK><![CDATA[]]></DOCLINK>
      <DOCFILENAME><![CDATA[]]></DOCFILENAME>
      <DOCCHANNEL></DOCCHANNEL>
      <DOCTITLE><![CDATA[]]></DOCTITLE>
      <DOCPEOPLE><![CDATA[]]></DOCPEOPLE>
      <DOCSOURCENAME><![CDATA[]]></DOCSOURCENAME>
      <DOCSTATUS>10</DOCSTATUS>
      <DOCCONTENT><![CDATA[]]></DOCCONTENT>
      <DOCHTMLCON><![CDATA[]]></DOCHTMLCON>
      <DOCWORDSCOUNT>308</DOCWORDSCOUNT>
      <DOCABSTRACT><![CDATA[]]></DOCABSTRACT>
      <DOCKEYWORDS></DOCKEYWORDS>
      <DOCAUTHOR><![CDATA[]]></DOCAUTHOR>
      <DOCRELTIME>2017-01-04 10:39:00</DOCRELTIME>
      <TITLECOLOR><![CDATA[]]></TITLECOLOR>
      <SUBDOCTITLE><![CDATA[]]></SUBDOCTITLE>
      <CHNLNAME></CHNLNAME>
    </PROPERTIES>
  </WCMDOCUMENT>
</WCMDOCUMENTS>


0 0
原创粉丝点击