/**
* 格式化XML輸出串.
*/
public static synchronized String formatXml(Element e, int indent)
{
indent++;
for (Node n = e.getFirstChild(); n != null; n = n.getNextSibling())
{
appendIndent(e, n, indent);
if (!n.getNodeName().equals("#text"))
{
formatXml( (Element)n, indent);
}
}
indent--;
appendIndent(e, indent);
return e.toString();
}
/**
* 在指定的節點前插入格式表示.
*/
private static synchronized void appendIndent(Element e, Node pos, int indent)
{
Document doc = e.getOwnerDocument();
if (indent == 0)
{
e.insertBefore(doc.createTextNode("\n"), pos);
}
for (int i = 0; i < indent; i++)
{
if (i == 0)
{
e.insertBefore(doc.createTextNode("\n\t"), pos);
}
else
{
e.insertBefore(doc.createTextNode("\t"), pos);
}
}
}
/**
* 追加格式表示.
*/
private static synchronized void appendIndent(Element e, int indent)
{
Document doc = e.getOwnerDocument();
if (indent == 0)
{
e.appendChild(doc.createTextNode("\n"));
}
for (int i = 0; i < indent; i++)
{
if (i == 0)
{
e.appendChild(doc.createTextNode("\n\t"));
}
else
{
e.appendChild(doc.createTextNode("\t"));
}
}
}
public static synchronized void setAttribute(Element e, String name, String value)
{
if (e == null || name == null || name.length() == 0 || value == null
|| value.length() == 0)
return;
else
e.setAttribute( name, value );
}
public static synchronized String getAttribute(Element e, String name)
{
return getAttribute( e, name, null );
}
public static synchronized String getAttribute(Element e, String name, String defval)
{
if( e == null || name == null || name.length()== 0 )
return defval;
else
return e.getAttribute(name);
}
public void transformerWrite( Element doc, String filename ) throws Exception
{
DOMSource doms = new DOMSource( doc );
File f = new File( filename );
StreamResult sr = new StreamResult( f );
transformerWrite( doms, sr );
}
public void transformerWrite( Element doc, File file ) throws Exception
{
DOMSource doms = new DOMSource( doc );
StreamResult sr = new StreamResult( file );
transformerWrite( doms, sr );
}
public void transformerWrite( Element doc, OutputStream outstream ) throws Exception
{
DOMSource doms = new DOMSource( doc );
StreamResult sr = new StreamResult( outstream );
transformerWrite( doms, sr );
}
public void transformerWrite( Element doc, Writer outwriter ) throws Exception
{
DOMSource doms = new DOMSource( doc );
StreamResult sr = new StreamResult( outwriter );
transformerWrite( doms, sr );
}
public void transformerWrite( DOMSource doms, StreamResult sr ) throws Exception
{
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
t.setOutputProperty( OutputKeys.ENCODING, "GBK" );
t.transform( doms, sr );
}
}