import java.io.IOException;
import java.io.StringWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
* Copyright 2007-2010 非也
* All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License v3 as published by the Free Software
* Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with this library; if not, see http://www.gnu.org/licenses/lgpl.html.
*
*/
/**
*
* @author 非也 nychen2000@163.com
* Fire Workflow 官方网站:www.firesoa.com 或者 www.fireflow.org
*
*/
public class W3cDocument {
/**
* @param args
*/
public static void main(String[] args) {
Document w3cdoc = null;
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
factory.setCoalescing(true);
DocumentBuilder parser = factory.newDocumentBuilder();
w3cdoc = parser.newDocument();
Element root = w3cdoc.createElement("foo");
root.setAttribute("attr1", "abc&def>123");
w3cdoc.appendChild(root);
/*
String xmlFromDom4j = getXml(w3cdoc,"UTF-8");
System.out.println(xmlFromDom4j);
*/
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
StreamResult dest = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(w3cdoc);
tf.transform(source, dest);
String xml = dest.getWriter().toString();
//xml = xml.replaceAll("&", "&");
System.out.println(xml);
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
public static String getXml(org.w3c.dom.Document w3cDoc,String encoding)
{
try{
org.dom4j.io.DOMReader xmlReader = new org.dom4j.io.DOMReader();
org.dom4j.Document dom4jDoc = xmlReader.read(w3cDoc);
//输出格式化器
OutputFormat format = new OutputFormat();//(" ", true);
//设置编码
format.setEncoding(encoding);
//format.setOmitEncoding(true);
format.setSuppressDeclaration(true);
//xml输出器
StringWriter out = new StringWriter();
XMLWriter xmlWriter = new XMLWriter(out, format);
xmlWriter.setEscapeText(true);
//打印doc
xmlWriter.write(dom4jDoc);
xmlWriter.flush();
//关闭输出器的流,即是printWriter
String xml = out.toString();
out.close();
return xml;
}catch(IOException e){
e.printStackTrace();
return null;
}
}
}