public static void dom4jParseXML(InputStream inStream, String fuctionName) throws Exception{
// DOM解析器 工厂类
/*DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document dm = db.parse(inStream);
System.out.println(dm.getElementsByTagName("soap:Envelope").item(0).getChildNodes());*/
//DOM4j
SAXReader reader = new SAXReader();
//获取数据方式一
reader.addHandler("/Envelope/Body/"+fuctionName+"Response/"+fuctionName+"Result/diffgram/NewDataSet/Table", new ElementHandler() {
@Override
public void onStart(ElementPath elementPath) {
// TODO Auto-generated method stub
//System.out.println(elementPath.getCurrent());
}
@Override
public void onEnd(ElementPath elementPath) {
// TODO Auto-generated method stub
//System.out.println(elementPath.getCurrent());
Element table = elementPath.getCurrent();
Element ele;
for(Iterator t = table.elementIterator(); t.hasNext();){
ele = (Element) t.next();
System.out.println(ele.getName()+ ":" + ele.getText());
ele.detach();
}
table.detach();
}
});
Document doc = reader.read(inStream);
/*Element root = doc.getRootElement(); // 获取根节点
System.out.println("根节点:" + root.getName()); // 拿到根节点的名称
System.out.println("-------------------------------");*/
//获取数据方式二
//List dataList = doc.selectNodes("/soap:Envelope/soap:Body//Table");
/*List dataList = doc.selectNodes("/Envelope//Table");
List els = doc.selectNodes("/soap:Envelope");
System.out.println(((Element)((Element)els.get(0)).selectNodes("soap:Body").get(0)).getName());
if(dataList != null && dataList.size() > 0){
Element table;
for (Iterator i = dataList.iterator(); i.hasNext();) {
table = (Element) i.next();
Element ele;
for(Iterator t = table.elementIterator(); t.hasNext();){
ele = (Element) t.next();
System.out.println(ele.getName()+ ":" + ele.getText());
}
}
}else{
System.out.println("无最新数据返回");
}*/
//获取数据方式三
/*Element body = root.element("Body"); ///Body
if (body != null) {
Element response = body.element(fuctionName+"Response"); ///getAlarmDataSetResponse
if (response != null) {
Element result = response.element(fuctionName+"Result"); ///getAlarmDataSetResult
if (result != null) {
Element diffgram = result.element("diffgram"); ///diffgram
if (diffgram != null) {
Element NewDataSet = diffgram.element("NewDataSet"); ///NewDataSet
if (NewDataSet != null) {
Element table;
for (Iterator i = NewDataSet.elementIterator(); i.hasNext();) {
table = (Element) i.next();
Element ele;
for(Iterator t = table.elementIterator(); t.hasNext();){
ele = (Element) t.next();
System.out.println(ele.getName()+ ":" + ele.getText());
}
}
}else{
System.out.println("无最新数据返回");
}
}
}
}
}*/
Dom4j 三种解析数据方式
最新推荐文章于 2019-06-18 14:46:02 发布