Java利⽤dom4j解析XML任意节点和属性分享⼀个Java解析XML字符串的⽅法,利⽤了dom4j,递归。可解析任意节点及节点属性值。
package test;
import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.dom4j.*;
import org.dom4j.io.OutputFormat;
抗诉申请书范文import org.dom4j.io.XMLWriter;
public class XMLUtils {
HashMap<String, String> nodeMap=new HashMap<String,String>();
HashMap<String, String> attributeMap=new HashMap<String,String>();
String fileNodeName="";
/**
* @author: shen
* @date : 2019年2⽉22⽇下午3:54:56
* @Title : getNodeValue
* @Description: 获取xml中指定节点名字的值
* @param xml字符串
* @param nodeName 节点名字
语文手抄报图片大全
* @return nodeValue 节点值
*/
public String getNodeValue(String xml, String nodeName){
Document document = null;
String value ="";
nodeMap.clear();//先清空,如果想加快效率,就⼀个请求结果存⼀次map,然后再从map⾥取,⽤完就清空
attributeMap.clear();//先清空
try{傲视群雄
document = DocumentHelper.parText(xml);
Element root = RootElement();
getNodes(root);
(nodeName);
//System.out.println("---->"+value);
}catch(DocumentException e){青年教育
// TODO Auto-generated catch block
e.printStackTrace();
}
return value;
}
/**
* @author: shen
* @date : 2019年2⽉22⽇下午3:55:56
* @Title : getAttributeValue
* @Description: 获取xml中指定节点名字指定属性名字的值
* @param xml字符串
* @param nodeName 节点名字
* @param attributeName 属性名字
* @return attributeValue 属性值
*/
public String getAttributeValue(String xml,String nodeName, String attributeName){
Document document = null;
String attributeValue ="";
fileNodeName=nodeName;
try{
document = DocumentHelper.parText(xml);
Element root = RootElement();
脚痛是什么原因getNodes(root);
(attributeName);
//System.out.println("---->"+value);
}catch(DocumentException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
return attributeValue;
}
public void getNodes(Element node){
//System.out.println("------------------");
//System.out.println("当前节点名称:"+Name());
//System.out.println("当前节点的内容:"+TextTrim());
nodeMap.Name(), TextTrim());
Name().equals(fileNodeName)){
// 当前节点所有属性的list
List<Attribute> list = node.attributes();
// 遍历当前节点的所有属性
for(Attribute attribute : list){
/
/System.out.println("属性名称:" + Name() + "属性值:" + Value());
attributeMap.Name(), Value());
}
}
// 递归遍历当前节点所有的⼦节点
List<Element> listElement = node.elements();// 所有⼀级⼦节点的list
for(Element e : listElement){// 遍历所有⼀级⼦节点
}
}
public static void main(String[] args){
/
/ TODO Auto-generated method stub
String xmlStr ="<?xml version=\"1.0\" encoding=\"gbk\"?>"+"<business id=\"97008\" comment=\"证书操作\">"
+"<body id=\"123456\">"+"<returncode>返回代码</returncode>"+"<returnmsg>返回信息</returnmsg>"+"</body>"
+"</business>";
//AqdlAPI testXML = new AqdlAPI();
// testXML.CreatZSCZXML();
//testXML.CreateXML_ZXBBXXCXXML("", "");
官的成语//System.out.adNodeValue(xmlStr, "returnmsg"));
德国球员
System.out.println("returnmsg:"+new XMLUtils().getNodeValue(xmlStr,"returnmsg"));
System.out.println("business->id:"+new XMLUtils().getAttributeValue(xmlStr,"business","id"));
System.out.println("body->id:"+new XMLUtils().getAttributeValue(xmlStr,"body","id"));
}
蜡笔小新怎么画}
运⾏结果: