📄 xmlutils.java
字号:
return null;
List list = new ArrayList();
Iterator it = node.elementIterator();
while(it.hasNext()){
Element ele = (Element)it.next();
list.add(ele.getName());
}
return list;
}
/**
* 获取指定节点下,所有子节点的值列表
* @param node Element
* @return List
*/
public static List getChildToList(Element node){
return getChildToList(node, null);
}
/**
* 获取指定节点下,指定名称的所有子节点的值列表
* @param node Element
* @param name String 要求匹配的节点名称,如果为null匹配所有节点
* @return List
*/
public static List getChildToList(Element node, String name){
if(node==null)
return null;
List list = new ArrayList();
String attrType = null;
Iterator it = (name==null)?node.elementIterator():node.elementIterator(name);
while(it.hasNext()){
Element ele = (Element)it.next();
attrType = ele.attributeValue(ATTR_TYPE);
if(TYPE_MAP.equals(attrType)){
list.add(getChildToMap(ele));
} else if(TYPE_LIST.equals(attrType)){
list.add(getChildToList(ele, ele.attributeValue(ATTR_LIST_TAG)));
} else if(TYPE_PAIRLIST.equals(attrType)){
list.add(getChildToPairList(ele));
} else{
list.add(ele.getText());
}
}
return list;
}
/**
* 获取指定节点下,所有子节点的名值构成的PairList列表
* @param node Element
* @return List
*/
public static PairList getChildToPairList(Element node){
if(node==null)
return null;
PairList list = new PairList();
Iterator it = node.elementIterator();
while(it.hasNext()){
Element ele = (Element)it.next();
list.add(new PairEntry(ele.getName(),ele.getText()));
}
return list;
}
/**
* 获取指定节点下的所有子节点名值构成的Map(递归生成Map)
* @param node Element
* @return Map
*/
public static Map getRecursiveMap(Element node){
if(node==null)
return null;
Map map = new LinkedHashMap();
Element ele = null;
Iterator it = node.elementIterator();
while(it.hasNext()){
ele = (Element)it.next();
if(ele.elements().size()>0)
map.put(ele.getName(), getRecursiveMap(ele));
else
map.put(ele.getName(), ele.getText());
}
return map;
}
public static List getRecursiveList(Element node){
return getRecursiveList(node, null);
}
/**
* 获取指定节点下的所有子节点名值构成的List(递归生成List)
* @param node Element
* @param name String //为指定的节点名,为空为所有节点
* @return Map
*/
public static List getRecursiveList(Element node, String name){
if(node == null)
return null;
List list = new ArrayList();
Element ele = null;
Iterator it = (name == null) ? node.elementIterator() : node.elementIterator(name);
while(it.hasNext()){
ele = (Element)it.next();
if(ele.elements().size() > 0)
list.add(getRecursiveList(ele, name));
else
list.add(ele.getText());
}
return list;
}
/**
* 获取指定节点下,所有子节点的名值构成的Map
* @param node Element
* @return Map
*/
public static Map getChildToMap(Element node){
if(node==null)
return null;
Map map = new LinkedHashMap();
Element ele = null;
String attrType = null;
Iterator it = node.elementIterator();
while(it.hasNext()){
ele = (Element)it.next();
attrType = ele.attributeValue(ATTR_TYPE);
if(TYPE_MAP.equals(attrType)){
map.put(ele.getName(), getChildToMap(ele));
} else if(TYPE_LIST.equals(attrType)){
map.put(ele.getName(), getChildToList(ele, ele.attributeValue(ATTR_LIST_TAG)));
} else if(TYPE_PAIRLIST.equals(attrType)){
map.put(ele.getName(), getChildToPairList(ele));
} else{
map.put(ele.getName(), ele.getText());
}
}
return map;
}
/**
* 获取指定编码的XML
* @param doc Document
* @param encoding String
* @return String
*/
public static String toXMLString(Document doc, String encoding){
try{
StringWriter out = new StringWriter();
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding(encoding);
format.setLineSeparator("\r\n");
XMLWriter writer = new XMLWriter(out, format);
writer.write(doc);
writer.close();
return out.toString();
} catch(Exception ex){
log.error("发生错误,无法输出XML[" + encoding + "]", ex);
return "";
}
}
/**
* 采用默认编码(GB2312)输出XML到OutputStream中
* @param doc Document
* @param out OutputStream
* @return boolean
*/
public static boolean writeXML(Document doc, OutputStream out){
return writeXML(doc, out, "GB2312");
}
/**
* 输出XML到OutputStream中
* @param doc Document
* @param out OutputStream
* @param encoding String
* @return boolean
*/
public static boolean writeXML(Document doc, OutputStream out, String encoding){
try{
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding(encoding);
format.setLineSeparator("\r\n");
XMLWriter writer = new XMLWriter(out, format);
writer.write(doc);
writer.close();
return true;
} catch(Exception ex){
log.error("发生错误,无法输出XML[" + encoding + "]到输出流中", ex);
return false;
}
}
/**
* 采用默认编码(GB2312)输出XML到Writer中
* @param doc Document
* @param wr Writer
* @return boolean
*/
public static boolean writeXML(Document doc, Writer wr){
return writeXML(doc, wr, "GB2312");
}
/**
* 输出XML到Writer中
* @param doc Document
* @param wr Writer
* @param encoding String 编码
* @return boolean
*/
public static boolean writeXML(Document doc, Writer wr, String encoding){
try{
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding(encoding);
format.setLineSeparator("\r\n");
XMLWriter writer = new XMLWriter(wr, format);
writer.write(doc);
writer.close();
return true;
} catch(Exception ex){
log.error("发生错误,无法输出XML[" + encoding + "]到输出流中", ex);
return false;
}
}
/**
* 采用默认编码(GB2312)输出XML到文件中
* @param doc Document
* @param fileName String 文件名
* @return boolean
*/
public static boolean writeXML(Document doc, String fileName){
return writeXML(doc, fileName, "GB2312");
}
/**
* 输出XML到文件中
* @param doc Document
* @param fileName String 文件名
* @param encoding String 编码
* @return boolean
*/
public static boolean writeXML(Document doc, String fileName, String encoding){
try{
FileWriter fw = new FileWriter(fileName);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding(encoding);
format.setLineSeparator("\r\n");
XMLWriter writer = new XMLWriter(fw, format);
writer.write(doc);
writer.close();
return true;
} catch(Exception ex){
log.error("发生错误,无法输出XML[" + encoding + "]到文件:" + fileName, ex);
return false;
}
}
//==== test ==============================
public static void main(String[] args){
Document doc = XMLUtils.buildDocument();
Element ele = doc.addElement("Root");
addChildByBean(ele, "BEAN", new Integer(10));
System.out.println("=====================");
System.out.println(XMLUtils.toXMLString(doc,"GB2312"));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -