待解析的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<ResInfo>
<barcode/>
<asset>
<assetcardno>B</assetcardno>
<comments/>
<buydate/>
<category/>
</asset>
<entity>
<entityid>901061314</entityid>
<entitycode>LTJHXYYCX01/XA-HWMACBTS529</entitycode>
<entityname>藍田局華胥電信營業廳CDMA基站/BTS529</entityname>
<entityspec>BTS</entityspec>
<vendorname>HuaWei</vendorname>
<model>HUAWEI BTS3900</model>
<installaddress/>
</entity>
<version/>
<sectornum>3</sectornum>
<rackname>HW401C</rackname>
<containers>
<container>
<shelfhight>0.086</shelfhight>
<cardinfos>
<cardinfo>
<cardname>290.藍田局華胥電信營業廳CDMA基站/BTS529/架1列1/框3槽(0)HECM</cardname>
</cardinfo>
<cardinfo>
<cardname>290.藍田局華胥電信營業廳CDMA基站/BTS529/架1列1/框3槽(10)FAN</cardname>
</cardinfo>
<cardinfo>
<cardname>290.藍田局華胥電信營業廳CDMA基站/BTS529/架1列1/框3槽(9)UPEU</cardname>
</cardinfo>
<cardinfo>
<cardname>290.藍田局華胥電信營業廳CDMA基站/BTS529/架1列1/框3槽(7)CMPT</cardname>
</cardinfo>
<cardinfo>
<cardname>290.藍田局華胥電信營業廳CDMA基站/BTS529/架1列1/框3槽(2)HCPM</cardname>
</cardinfo>
</cardinfos>
</container>
<container>
<shelfhight>0.308</shelfhight>
<cardinfos>
<cardinfo>
<cardname>290.藍田局華胥電信營業廳CDMA基站/BTS529/架1列1/框1槽(2)CRFU</cardname>
</cardinfo>
<cardinfo>
<cardname>290.藍田局華胥電信營業廳CDMA基站/BTS529/架1列1/框1槽(4)CRFU</cardname>
</cardinfo>
<cardinfo>
<cardname>290.藍田局華胥電信營業廳CDMA基站/BTS529/架1列1/框1槽(0)CRFU</cardname>
</cardinfo>
</cardinfos>
</container>
<container>
<shelfhight>0.086</shelfhight>
</container>
<container>
<shelfhight>0.044</shelfhight>
</container>
</containers>
<ReturnResult>0</ReturnResult>
<ReturnInfo>成功</ReturnInfo>
</ResInfo>
j用dom4j解析該xml文件
需要導入的jar包: import org.apache.log4j.Logger; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.SAXReader; //dom4j解析xml //創建SAXReader對象 reader SAXReader reader = new SAXReader(); //因為我項目中的xml文件 是查出來的,類型是字符串類型,所以我們需要把字符串轉換成xml文件 String resultxml = broadBandResult.getReviceXML();//我拿到的字符串類型的返回報文 Document document = DocumentHelper.parseText(resultxml); //將字符串轉換成xml,具體轉換 可以百度搜索 dom4j字符串轉xml //獲取文件的根節點 Element root = document.getRootElement(); String node1Name = "需展示的節點名稱"; //得到節點的值 /ResInfo/asset/assetcardno為需要得到哪個節點的路徑 //這里我要得到assetcardno節點的值
String node1text = root.selectSingleNode("/ResInfo/asset/assetcardno").getText();String node2Name = "描述";
String node2text = root.selectSingleNode("/ResInfo/asset/comments").getText();
//因為項目需要拼接html ,這一部分大家可以略過不看
desc.append("<div class=\"mui-input-row\" style=\"-webkit-user-select:text;height:30%\"><label>"+node1Name+"</label><label name='"+node1text+"' id='"+node1text+"1' style=\"width: 60%;\">"+node1text+"</label></div>")
.append("<div class=\"mui-input-row\" style=\"-webkit-user-select:text;height:30%\"><label>"+node2Name+"</label><label name='"+node2text+"' id='"+node2text+"1' style=\"width: 60%;\">"+node2text+"</label></div>")
//得到containers節點
Node node1 = root.selectSingleNode("/ResInfo/containers");
//得到containers節點下邊的子節點container,因為有多個container,所以用list集合接收
List<Element> list = ((Element) node1).elements("container");
//循環這個集合
for (Element element : list) {
String node13Name = "機框安裝高度";
//得到container節點里面的shelfhight節點
Element node13 =element.element("shelfhight");
//得到shelfhight節點的值
String node13Text = node13.getText();
//拼接html
desc.append("<li class=\"mui-table-view-cell\" ><div style=\"width: 80%;float: left;\"></div><br/>")
.append("<div><label>"+node13Name+"</label><label name='"+node13Text+"' id='"+node13Text+"1' style=\"width: 60%;\">"+node13Text+"</label></div><br/>");
//得到container節點里面的cardinfos
Element node14 =(Element) element.selectSingleNode("cardinfos");
if(node14 != null){
logger.error("===node14==="+node14);
//得到cardinfos節點里面的cardinfo節點,因為cardinfos節點里面有多個cardinfo節點,所以用List集合接收
List<Element> childList2 =node14.elements("cardinfo");
logger.error("===childList2集合長度==="+childList2.size());
//循環childList2 集合
for (Element element2 : childList2) {
String node15Name = "機框下的板卡拼裝名稱列表";
//得到cardinfo節點里面的cardname節點
Element node15 =element2.element("cardname");
//得到cardname節點的值
String node15Text = node15.getText();
// 拼接html
desc.append("<div><label name='"+node15Text+"' id='"+node15Text+"1' style=\"width:60%;\">"+node15Text+"</label></div><br/>");
}
}
desc.append("</li>");
}
這樣就解析完了一個xml文件。。。。這只是我記錄工作中碰到的問題,歡迎各位大神予以糾正指錯
