/**
* <p>Copyright: Copyright (c) 2012</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.jres.script.util.impl;
import java.io.ByteArrayOutputStream;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentFactory;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import com.hundsun.ares.studio.core.ConsoleHelper;
import com.hundsun.ares.studio.jres.script.util.IScriptXMLUtil;
/**
* @author lvgao
*
*/
public class ScriptXMLUtilImpl implements IScriptXMLUtil{
public static ScriptXMLUtilImpl instance = new ScriptXMLUtilImpl();
static final Logger console = ConsoleHelper.getLogger();
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.script.util.IScriptXMLUtil#createDoc(java.lang.String)
*/
@Override
public Document createDoc(String rootName) {
Element root = DocumentFactory.getInstance().createElement(rootName);
Document doc = DocumentFactory.getInstance().createDocument(root);
return doc;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.script.util.IScriptXMLUtil#addElement(org.dom4j.Element, java.lang.String, java.lang.String)
*/
@Override
public Element addElement(Element parent, String name, String value) {
//���Ը��ڵ�
Element tmpElement = DocumentFactory.getInstance().createElement(name);
if(!StringUtils.isEmpty(value)){
tmpElement.setText(value);
}
parent.add(tmpElement);
return tmpElement;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.script.util.IScriptXMLUtil#addElement(org.dom4j.Document, java.lang.String, java.lang.String)
*/
@Override
public Element addElement(Document doc, String name, String value) {
return addElement(doc.getRootElement(), name, value);
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.script.util.IScriptXMLUtil#addAttr(org.dom4j.Element, java.lang.String, java.lang.String)
*/
@Override
public void addAttr(Element parent, String name, String value) {
parent.add(DocumentFactory.getInstance().createAttribute(parent, name, value));
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.script.util.IScriptXMLUtil#addAttr(org.dom4j.Document, java.lang.String, java.lang.String)
*/
@Override
public void addAttr(Document doc, String name, String value) {
addAttr(doc.getRootElement(), name, value);
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.script.util.IScriptXMLUtil#getContent(org.dom4j.Document, java.lang.String)
*/
@Override
public String getContent(Document doc, String charset) {
doc.setXMLEncoding(charset);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding(charset);
ByteArrayOutputStream out = new ByteArrayOutputStream();
XMLWriter writer;
try {
writer = new XMLWriter(out, format);
writer.write(doc);
return new String(out.toByteArray(),charset);
} catch (Exception e) {
e.printStackTrace();
console.error("����XMLʧ�ܣ���ϸ��Ϣ:"+ e.getMessage());
}
return "";
}
}