dom4j解析XML

家住魔仙堡 提交于 2020-03-24 11:41:42
一、嵌套多层<?xml version="1.0" encoding="UTF-8"?>
<jstmbsinterface>
    <result  code="0"  description="" serverdatetime="2016-07-12 09:51:26"></result>
    <data  encryptflag="0" encryptkey="">
     <Ships   count="3"   batchnum="1" totalbatch="1">
       <Ship>
                <IsCJStandard>0</IsCJStandard>
                <ShipTypeName>24234</ShipTypeName>
                <InspectDate>2014-3-20 0:00:00</InspectDate>
                <Comments><![CDATA[]]>
                </Comments>
                <ShipTeuOne>0.00</ShipTeuOne>
                <LoadTonOne>43.00</LoadTonOne>
                <HostNumOne>1</HostNumOne>
                <SafeManageNum></SafeManageNum>
                <InitialRegNo>4243</InitialRegNo>
                <ShipIdNo></ShipIdNo>
                <ShipIdNoDate></ShipIdNoDate>
                <StockProportion>54.00</StockProportion>
                <EntLicenseNo></EntLicenseNo>
                <ShipId>301003221008213841</ShipId>
                <CancelTime></CancelTime>
                <ValidDate>2015-3-20 0:00:00</ValidDate>
                <RegCertNum>2342342</RegCertNum>
                <TotalLength></TotalLength>
                <ShipName>966</ShipName>
                <ArchiveNum>01319</ArchiveNum>
                <ShipEnName></ShipEnName>
                <ShipSurveyNum>2003Q2106441</ShipSurveyNum>
                <ShipRegNum>270510000022</ShipRegNum>
                <ShipType>0203</ShipType>
                <TransType>2</TransType>
                <Runner>运输有限公司</Runner>
                <BeforeName></BeforeName>
                <NationCertNum>270510000022</NationCertNum>
                <LeaseCretNum></LeaseCretNum>
                <TempNationCertNum>41234</TempNationCertNum>
                <ChargeShipType>0</ChargeShipType>
                <Manager></Manager>
                <ShipOwner>缺1</ShipOwner>
                <Material>01</Material>
                <BuildDate>2003-12-10 0:00:00</BuildDate>
                <ManagerLicenseNum>交长苏XK1726</ManagerLicenseNum>
                <ShipValue>0.00</ShipValue>
                <RebuildDate></RebuildDate>
                <ShipPort>无锡</ShipPort>
                <ShipPortCode>3225</ShipPortCode>
                <ShipNationality></ShipNationality>
                <BuildCompany>造船厂</BuildCompany>
                <GrossTon>97.00</GrossTon>
                <NetTon>54.00</NetTon>
                <BuildSite>000</BuildSite>
                <Draft>0.00</Draft>
                <LoadTon>150.00</LoadTon>
                <ShipTeu></ShipTeu>
                <GoodsArea></GoodsArea>
                <Vehicles>0</Vehicles>
                <Passengers>0</Passengers>
                <RatingSpeed>0.00</RatingSpeed>
                <HostNum>1</HostNum>
                <MainFrame>134.00</MainFrame>
                <IsStandard>1</IsStandard>
                <ShipLength>28.60</ShipLength>
                <ShipTypeWidth>6.18</ShipTypeWidth>
                <ShipTypeDepth>2.00</ShipTypeDepth>
                <IsSailingJh>1</IsSailingJh>
                <TranLicenseNum>0159</TranLicenseNum>
                <VerifyCode>53822</VerifyCode>
                <LicenseFirstDate>2012-04-16 00:00:00</LicenseFirstDate>
                <LicenseStartDate>2015-08-28 00:00:00</LicenseStartDate>
                <LicenseEndDate>2018-08-27 00:00:00</LicenseEndDate>
                <LicenseIssueDate>2015-8-28 16:47:52</LicenseIssueDate>
                <IssueOrgName>运输管理局</IssueOrgName>
                <OrgId>6872b6ce14b042da8127ba6fde4ddb97</OrgId>
                <OwnerId>300704281011306626</OwnerId>
                <BusiScopeNames>普通货船运输</BusiScopeNames>
                <BusiScopeName>普通货船运输</BusiScopeName>
                <BusiScopeCodes>0102010201</BusiScopeCodes>
                <AreaCode>3265100</AreaCode>
                <CertState>1</CertState>
                <OperState>10</OperState>
                <CaptainName></CaptainName>
                <ShipWidth>6.18</ShipWidth>
                <ShipHeight>2.00</ShipHeight>
                <TotalLoadTon></TotalLoadTon>
                <IsInlRiverStandard>0</IsInlRiverStandard>
            </Ship>
            <Ship>
                <IsCJStandard>0</IsCJStandard>
                <ShipTypeName>341</ShipTypeName>
                <InspectDate></InspectDate>
                <Comments><![CDATA[]]>
                </Comments>
                <ShipTeuOne>0.00</ShipTeuOne>
                <LoadTonOne>122.00</LoadTonOne>
                <HostNumOne>2</HostNumOne>
                <SafeManageNum></SafeManageNum>
                <InitialRegNo>1111</InitialRegNo>
                <ShipIdNo>231312</ShipIdNo>
                <ShipIdNoDate>2015-8-28 0:00:00</ShipIdNoDate>
                <StockProportion>54.00</StockProportion>
                <EntLicenseNo></EntLicenseNo>
                <ShipId>300302191055102943</ShipId>
                <CancelTime></CancelTime>
                <ValidDate></ValidDate>
                <RegCertNum>21111</RegCertNum>
                <TotalLength></TotalLength>
                <ShipName>太湖</ShipName>
                <ArchiveNum>08028</ArchiveNum>
                <ShipEnName></ShipEnName>
                <ShipSurveyNum>211155364273</ShipSurveyNum>
                <ShipRegNum>2123</ShipRegNum>
                <ShipType>0101</ShipType>
                <TransType>1</TransType>
                <Runner>游游船公司</Runner>
                <BeforeName></BeforeName>
                <NationCertNum>2123</NationCertNum>
                <LeaseCretNum>1111</LeaseCretNum>
                <TempNationCertNum>22222</TempNationCertNum>
                <ChargeShipType>0</ChargeShipType>
                <Manager></Manager>
                <ShipOwner>缺</ShipOwner>
                <Material>01</Material>
                <BuildDate>1980-4-1 0:00:00</BuildDate>
                <ManagerLicenseNum>K0745号</ManagerLicenseNum>
                <ShipValue>0.00</ShipValue>
                <RebuildDate>2015-8-28 0:00:00</RebuildDate>
                <ShipPort>无锡</ShipPort>
                <ShipPortCode>3225</ShipPortCode>
                <ShipNationality></ShipNationality>
                <BuildCompany>船厂</BuildCompany>
                <GrossTon>153.00</GrossTon>
                <NetTon>31.00</NetTon>
                <BuildSite>FJKAK</BuildSite>
                <Draft>3.00</Draft>
                <LoadTon>0.00</LoadTon>
                <ShipTeu></ShipTeu>
                <GoodsArea>0.00</GoodsArea>
                <Vehicles>0</Vehicles>
                <Passengers>130</Passengers>
                <RatingSpeed>0.00</RatingSpeed>
                <HostNum>2</HostNum>
                <MainFrame>182.20</MainFrame>
                <IsStandard>0</IsStandard>
                <ShipLength>0.00</ShipLength>
                <ShipTypeWidth>0.00</ShipTypeWidth>
                <ShipTypeDepth>0.00</ShipTypeDepth>
                <IsSailingJh>0</IsSailingJh>
                <TranLicenseNum>0208003</TranLicenseNum>
                <VerifyCode>43407</VerifyCode>
                <LicenseFirstDate>2011-03-17 00:00:00</LicenseFirstDate>
                <LicenseStartDate>2015-08-28 00:00:00</LicenseStartDate>
                <LicenseEndDate>2018-08-27 00:00:00</LicenseEndDate>
                <LicenseIssueDate>2015-8-28 0:00:00</LicenseIssueDate>
                <IssueOrgName>运输管理局</IssueOrgName>
                <OrgId>6872b6ce14b042da8127ba6fde4ddb97</OrgId>
                <OwnerId>300209280855043295</OwnerId>
                <BusiScopeNames>旅游运输</BusiScopeNames>
                <BusiScopeName>通客船运输</BusiScopeName>
                <BusiScopeCodes>0302030101</BusiScopeCodes>
                <AreaCode>320100</AreaCode>
                <CertState>1</CertState>
                <OperState>10</OperState>
                <CaptainName></CaptainName>
                <ShipWidth>0.00</ShipWidth>
                <ShipHeight>0.00</ShipHeight>
                <TotalLoadTon></TotalLoadTon>
                <IsInlRiverStandard>0</IsInlRiverStandard>
            </Ship>
            <Ship>
                <IsCJStandard>0</IsCJStandard>
                <ShipTypeName>集装箱船</ShipTypeName>
                <InspectDate>2013-6-27 8:55:59</InspectDate>
                <Comments><![CDATA[]]>
                </Comments>
                <ShipTeuOne>50.00</ShipTeuOne>
                <LoadTonOne>1078.00</LoadTonOne>
                <HostNumOne>2</HostNumOne>
                <SafeManageNum></SafeManageNum>
                <InitialRegNo>12</InitialRegNo>
                <ShipIdNo></ShipIdNo>
                <ShipIdNoDate></ShipIdNoDate>
                <StockProportion>100.00</StockProportion>
                <EntLicenseNo></EntLicenseNo>
                <ShipId>301211050949527795</ShipId>
                <CancelTime></CancelTime>
                <ValidDate>2012-6-27 0:00:00</ValidDate>
                <RegCertNum>123</RegCertNum>
                <TotalLength></TotalLength>
                <ShipName>6号</ShipName>
                <ArchiveNum>01413</ArchiveNum>
                <ShipEnName></ShipEnName>
                <ShipSurveyNum>2012J2102836</ShipSurveyNum>
                <ShipRegNum>270512000146</ShipRegNum>
                <ShipType>0205</ShipType>
                <TransType>2</TransType>
                <Runner>限公司</Runner>
                <BeforeName></BeforeName>
                <NationCertNum>270512000146</NationCertNum>
                <LeaseCretNum></LeaseCretNum>
                <TempNationCertNum>123</TempNationCertNum>
                <ChargeShipType>0</ChargeShipType>
                <Manager></Manager>
                <ShipOwner>缺</ShipOwner>
                <Material>01</Material>
                <BuildDate>2012-8-18 0:00:00</BuildDate>
                <ManagerLicenseNum>2182</ManagerLicenseNum>
                <ShipValue>0.00</ShipValue>
                <RebuildDate></RebuildDate>
                <ShipPort>jj锡</ShipPort>
                <ShipPortCode>3225</ShipPortCode>
                <ShipNationality></ShipNationality>
                <BuildCompany>2312修造厂</BuildCompany>
                <GrossTon>734.00</GrossTon>
                <NetTon>477.00</NetTon>
                <BuildSite>江1561</BuildSite>
                <Draft>0.00</Draft>
                <LoadTon>1078.00</LoadTon>
                <ShipTeu>50.00</ShipTeu>
                <GoodsArea>1078.00</GoodsArea>
                <Vehicles>50</Vehicles>
                <Passengers>0</Passengers>
                <RatingSpeed>0.00</RatingSpeed>
                <HostNum>2</HostNum>
                <MainFrame>280.00</MainFrame>
                <IsStandard>0</IsStandard>
                <ShipLength>48.14</ShipLength>
                <ShipTypeWidth>12.50</ShipTypeWidth>
                <ShipTypeDepth>3.15</ShipTypeDepth>
                <IsSailingJh>0</IsSailingJh>
                <TranLicenseNum>12)0200166</TranLicenseNum>
                <VerifyCode>63933</VerifyCode>
                <LicenseFirstDate>2012-11-05 00:00:00</LicenseFirstDate>
                <LicenseStartDate>2014-10-14 00:00:00</LicenseStartDate>
                <LicenseEndDate>2014-10-31 00:00:00</LicenseEndDate>
                <LicenseIssueDate>2014-10-14 0:00:00</LicenseIssueDate>
                <IssueOrgName>033运输管理处</IssueOrgName>
                <OrgId>6872b6ce14b042da8127ba6fde4ddb97</OrgId>
                <OwnerId>301006171506256528</OwnerId>
                <BusiScopeNames>156146货船运输</BusiScopeNames>
                <BusiScopeName>0213023通货船运输</BusiScopeName>
                <BusiScopeCodes>0102010201</BusiScopeCodes>
                <AreaCode>320200</AreaCode>
                <CertState>1</CertState>
                <OperState>10</OperState>
                <CaptainName></CaptainName>
                <ShipWidth>12.50</ShipWidth>
                <ShipHeight>3.15</ShipHeight>
                <TotalLoadTon></TotalLoadTon>
                <IsInlRiverStandard>0</IsInlRiverStandard>
            </Ship>
        </Ships>
    </data>
</jstmbsinterface>

解析方式:

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.*;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class AllpagesParse  extends Model<AllpagesParse> {
    
            static  String    ShipName;
            static  String  ShipEnName;
            static  String    ShipIdNo;
            static  String    Runner;
            static  String    EntLicenseNo;
            static  String    ShipOwner;
            static  String    BuildDate;
            static  String    ShipPort;
            static  String    GrossTon;
            static  String    NetTon;
            static  String    Draft;
            static  String    LoadTonOne;
            static  String    ShipTeuOne;
            static  String    Passengers;
            static  String    RatingSpeed;
            static  String    HostNumOne;
            static  String    MainFrame;
            static  String    TotalLength;
            static  String    ShipLength;
            static  String    ShipWidth;
            static  String    ShipTypeDepth;
            static  String    TransType;
            static  String    TranLicenseNum;
            static  String    LicenseStartDate;
            static  String    LicenseEndDate;
            static  String    IssueOrgName;
            static  String    BusiScopeName;
            static  String CertState;
            static  String ShipType;
            public static String     updatetime;
            public static  String   batchnum ;
            public static  String     totalbatch;
            public static  String     fStr;
            public static void parseXML(String respXML) throws DocumentException, MalformedURLException{
                SAXReader reader = new SAXReader();
                fStr = respXML.replaceAll("&nbsp;", "");
                Document doc = DocumentHelper.parseText(fStr); 
                Element root=doc.getRootElement();//获取根节点  
                @SuppressWarnings("rawtypes")
                List list = root.elements("data");
                List listresult = root.elements("result");
                for(Object objresult:listresult){
                    Element result = (Element) objresult;
                    updatetime  = result.attributeValue("serverdatetime");
                }
                for (Object obj: list) {
                    Element shipElement = (Element) obj;
                    parseShipElement(shipElement);
                }
            }         
            
            private static void parseShipElement(Element shipElement) {
                @SuppressWarnings("rawtypes")
                List list = shipElement.elements();
                for (Object obj: list) {
                    Element Ships = (Element) obj;
                    String key = Ships.getName();
                    batchnum = Ships.attributeValue("batchnum");
                    totalbatch = Ships.attributeValue("totalbatch");
                    System.out.println("\n"+"Ships_batchnum:"+"\t"+batchnum+"\n");    //当前页数
                    System.out.println("\n"+"Ships_totalbatch:"+totalbatch+"\n");    //总页数
                    String value = Ships.getTextTrim();
                    @SuppressWarnings("rawtypes")
                    java.util.Iterator Ship = Ships.elementIterator("Ship"); 
                    while(Ship.hasNext()){
                        
                        Element tableItem = (Element) Ship.next();
                        ShipName = tableItem.elementTextTrim("ShipName");
                        BuildDate = tableItem.elementTextTrim("BuildDate");
                        CertState = tableItem.elementTextTrim("CertState"); //1:有效       2:注销 
                        ShipPort = tableItem.elementTextTrim("ShipPort");
                        Draft = tableItem.elementTextTrim("Draft");
                        RatingSpeed = tableItem.elementTextTrim("RatingSpeed");
                        ShipLength = tableItem.elementTextTrim("ShipLength");
                        ShipWidth = tableItem.elementTextTrim("ShipWidth");
                        TransType = tableItem.elementTextTrim("TransType");
                        TranLicenseNum = tableItem.elementTextTrim("TranLicenseNum");
                        LicenseStartDate = tableItem.elementTextTrim("LicenseStartDate");
                        LicenseEndDate = tableItem.elementTextTrim("LicenseEndDate");
                        IssueOrgName = tableItem.elementTextTrim("IssueOrgName");
                        ShipEnName = tableItem.elementTextTrim("ShipEnName");
                        ShipIdNo = tableItem.elementTextTrim("ShipIdNo");
                        Runner = tableItem.elementTextTrim("Runner");
                        EntLicenseNo = tableItem.elementTextTrim("EntLicenseNo");
                        ShipOwner = tableItem.elementTextTrim("ShipOwner");
                        GrossTon = tableItem.elementTextTrim("GrossTon");
                        NetTon = tableItem.elementTextTrim("NetTon");
                        LoadTonOne = tableItem.elementTextTrim("LoadTonOne");
                        ShipTeuOne = tableItem.elementTextTrim("ShipTeuOne");
                        Passengers = tableItem.elementTextTrim("Passengers");
                        HostNumOne = tableItem.elementTextTrim("HostNumOne");
                        MainFrame = tableItem.elementTextTrim("MainFrame");
                        TotalLength = tableItem.elementTextTrim("TotalLength");
                        ShipTypeDepth = tableItem.elementTextTrim("ShipTypeDepth");
                        BusiScopeName = tableItem.elementTextTrim("BusiScopeName");
                        ShipType= tableItem.elementTextTrim("ShipType");

                    }
            }

}
二、嵌套一层
<?xml version="1.0" encoding="UTF-8"?>
<response id=”1” cmd=”clone”>
   <src_host_name>192.168.4.205</src_host_name>
   <src_physics_host_name>192.168.4.206</src_physics_host_name>
   <result>1</result>
   <error_code>100</error_code>
</response>

解析方式:

            String  dataGot = "xml";
            Document doc = DocumentHelper.parseText(dataGot); 
            Element root=doc.getRootElement();//获取根节点  
            String host_name = root.elementTextTrim("src_host_name");
            String result = root.elementTextTrim("result");
            String error_code = root.elementTextTrim("error_code");            

三、嵌套两层

<?xml version="1.0" encoding="UTF-8" ?>
<Response>
    <MO>
        <Mobile>16357164589</Mobile>
        <Message>哈哈哈哈哈哈哈哈哈哈哈</Message>
        <ReceiveTime>2012-01-12 15:23:12</ReceiveTime>
        <ExtendCode>扩展号</ExtendCode>
        <MsgID>1100</MsgID>
    </MO>
    <MO>
        <Mobile>15957166591</Mobile>
        <Message>我了</Message>
        <ReceiveTime>2012-01-12 15:23:12</ReceiveTime>
        <ExtendCode>扩展号</ExtendCode>
        <MsgID>1101</MsgID>
    </MO>
</Response>

解析方式:

            Document doc = DocumentHelper.parseText(xml);
            Element Response = doc.getRootElement();
            Iterator<?> Report = Response.elementIterator("MO");
            while (Report.hasNext()) {
                Element tableItem = (Element) Report.next();
//                String msgID = tableItem.elementTextTrim("MsgID");
                String mobile = tableItem.elementTextTrim("Mobile");
                String message = tableItem.elementTextTrim("Message");
                String receiveTime = tableItem.elementTextTrim("ReceiveTime");
                log.info("SmsReply>>>>>>>>>>mobile:" + mobile + ",message:" + message+",receiveTime:"+receiveTime);

            }

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!