📄 dxmlutil.java
字号:
package org.xinguan.common.util;
import java.io.*;
import java.util.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import org.w3c.dom.*;
import org.xinguan.common.logs.*;
import org.xml.sax.*;
final public class DXmlUtil
{
static private DocumentBuilder DomBuilder;
static private Transformer PlainTransformer;
static private Transformer IndentTransformer;
static
{
try
{
DomBuilder=DocumentBuilderFactory.newInstance().newDocumentBuilder();
}
catch(Throwable throwed)
{
LogsUtil.log(Level.Error,"Xml文档解析器创建--->异常",throwed);
}
TransformerFactory tffactory=TransformerFactory.newInstance();
try
{
tffactory.setAttribute("indent-number",2);
}
catch(Throwable th)
{
}
try
{
PlainTransformer=tffactory.newTransformer();
PlainTransformer.setOutputProperty("method","xml");
PlainTransformer.setOutputProperty("indent","no");
PlainTransformer.setOutputProperty("encoding","gb2312");
}
catch(Throwable throwed)
{
LogsUtil.log(Level.Error,"Xml文档单行格式化器创建--->异常",throwed);
}
try
{
IndentTransformer=tffactory.newTransformer();
IndentTransformer.setOutputProperty("method","xml");
IndentTransformer.setOutputProperty("indent","yes");
IndentTransformer.setOutputProperty("encoding","gb2312");
}
catch(Throwable throwed)
{
LogsUtil.log(Level.Error,"Xml文档多行格式化器创建--->异常",throwed);
}
}
final static public Document newDocument()
{
try
{
return DomBuilder.newDocument();
}
catch(Exception ex)
{
LogsUtil.log(Level.Error,"Xml文档创建--->异常",ex);
return null;
}
}
final static public Element newDocument(String name)
{
try
{
Document doc=DomBuilder.newDocument();
Element root=doc.createElement(name);
doc.appendChild(root);
return root;
}
catch(Exception ex)
{
LogsUtil.log(Level.Error,"Xml文档创建--->异常",ex);
return null;
}
}
final static public Element newElement(Document doc,String name)
{
return doc.createElement(name);
}
final static public Element newElement(Document doc,String name,Hashtable<?,?> attrs)
{
Element element=doc.createElement(name);
if(attrs!=null)
{
for(Object key:attrs.keySet())
{
element.setAttribute(key.toString(),attrs.get(key).toString());
}
}
return element;
}
final static public Element newElement(Element parent,String name)
{
Element element=parent.getOwnerDocument().createElement(name);
parent.appendChild(element);
return element;
}
final static public Element newElement(Element parent,String name,Hashtable<?,?> attrs)
{
Element element=parent.getOwnerDocument().createElement(name);
if(attrs!=null)
{
for(Object key:attrs.keySet())
{
String attrname=key.toString();
String attrvalue=attrs.get(key).toString();
element.setAttribute(attrname,attrvalue);
}
}
parent.appendChild(element);
return element;
}
final static public String xml2String(Document doc)
{
return xml2String(doc,false);
}
final static public Element child(Element parent,String nameid)
{
NodeList nodes=parent.getElementsByTagName(nameid);
if(nodes!=null&&nodes.getLength()==1&&nodes.item(0) instanceof Element)
{
return (Element)nodes.item(0);
}
throw new RuntimeException("指定的Xml子节点没有找到");
}
final static public List<Element> children(Element parent,String nameid)
{
NodeList nodes=parent.getElementsByTagName(nameid);
List<Element> children=new ArrayList<Element>();
for(int idx=0;idx<nodes.getLength();idx++)
{
Node node=nodes.item(idx);
if(node instanceof Element)
{
children.add((Element)node);
}
}
return children;
}
final static public String xml2String(Document doc,boolean oneline)
{
try
{
StringWriter writer=new StringWriter();
if(oneline)
{
PlainTransformer.transform(new DOMSource(doc),new StreamResult(writer));
}
else
{
IndentTransformer.transform(new DOMSource(doc),new StreamResult(writer));
}
return oneline?writer.toString().replaceAll("\r\n","").replaceAll("\t",""):writer.toString();
}
catch(Throwable ex)
{
throw new RuntimeException("Xml文档转换--->异常",ex);
}
}
final static public Document string2Xml(String xml)
{
InputSource source=new InputSource(new StringReader(SystUtil.propString(xml)));
try
{
return DomBuilder.parse(source);
}
catch(Throwable th)
{
throw new RuntimeException("Xml文档分析--->异常",th);
}
}
public static void main(String[] args)
{
System.out.println("0002_夏富春_320981198203038817_上海建设银行_000000000000__".split("\\_").length);
System.out.println("0002_夏富春_320981198203038817_上海建设银行_000000000000__".split("_").length);
Document doc=newDocument();
Element root=newElement(doc,"root");
doc.appendChild(root);
Element elm2=newElement(root,"day");
elm2.setTextContent("help");
Element elm=newElement(root,"size");
elm.setAttribute("name","报到的d");
Hashtable<String,String> inattrs=new Hashtable<String,String>();
inattrs.put("p1","24");
inattrs.put("p3","23");
inattrs.put("p12","22");
newElement(elm,"info",inattrs);
newElement(elm,"info",null);
String xml=xml2String(doc,true);
System.out.println(xml);
Document doc2=string2Xml(xml);
System.out.println(DXmlUtil.xml2String(doc2));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -