xml文件解析

1.引入依赖

<dependency>
        <groupId>dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>1.6.1</version>
    </dependency>

2.素材格式demo

		<?xml version="1.0" encoding="UTF-8" ?>
		<雷达辐射源基本信息>
			<文件名称 文件名称="铺路爪雷达基本信息">
				<文件类型内码>1</文件类型内码>
				<提供单位>上级</提供单位>    
				<电子目标内码>1231223</电子目标内码>
				<装备类型内码>1231223</装备类型内码>
				<电子目标类别内码>1231223</电子目标类别内码>
				<名称>铺路爪</名称>
				<型号内码>铺路爪</型号内码>
				<国家地区内码>12</国家地区内码>
				<敌我属性内码>1</敌我属性内码>
				<威胁等级内码>1</威胁等级内码>
				<用途>1</用途>
				<部署信息>1</部署信息>
				<活动区域描述>1</活动区域描述>
				<生产商>洛克希德马丁</生产商>
				<研制年代>1970</研制年代>
				<备注>“铺路爪”相控阵雷达的编号为AN/APS-115,是美国上世纪					………………></备注>
			</文件名称>  
	</雷达辐射源基本信息>

3.具体解析代码如下

public class ReadNewRadarMessage {
//这是实体,把解析出来的每个元素set到这个实体
private NewRadarMessage newRadarMessage = null;
//这里的file 是指完整的路径,例如:D:/temporary/Upload/test.xml
public NewRadarMessage getNewRadarMessage(File file){
    SAXReader reader = new SAXReader();
    reader.setEncoding("GB2312");//这里设置文件编码
    try {
        Document document = reader.read(file);
        //这是获取最外层的节点<bookstore>
        Element bookstore = document.getRootElement();
        Iterator storeit = bookstore.elementIterator();
        //最外层的节点下面的子节点id

        while (storeit.hasNext()){
            newRadarMessage = new NewRadarMessage();

            Element bookElement = (Element) storeit.next();

            List<Attribute> attributes = bookElement.attributes();
            for(Attribute attribute : attributes){
                System.out.println(attribute.getName());
                String str1 = "文件名称";
                if((str1).equals(attribute.getName())){
                    String fileName = attribute.getValue();
                    System.out.println(fileName);
                    newRadarMessage.setFileName(fileName);
                }
            }

            //这是获取bookstore节点下面的子节点
            Iterator bookit = bookElement.elementIterator();
            while(bookit.hasNext()){
                Element child = (Element) bookit.next();
                String nodeName = child.getName();
                String str2 = "文件名称";

                if(nodeName.equals(str2)){
                    String fileName = child.getStringValue();
                    newRadarMessage.setFileName(fileName);
                }else if(nodeName.equals("文件类型内码")){
                    newRadarMessage.setMaterialFileTypeId(child.getStringValue());
                }else if(nodeName.equals("提供单位")){
                    newRadarMessage.setSource(child.getStringValue());
                }else if(nodeName.equals("电子目标内码")){
                    newRadarMessage.setElectronicObjectId(child.getStringValue());
                }else if(nodeName.equals("装备类型内码")){
                    newRadarMessage.setEquipmentTypeId(child.getStringValue());
                }else if(nodeName.equals("电子目标类别内码")){
                    newRadarMessage.setObjectTypeId(child.getStringValue());
                }else if(nodeName.equals("名称")){
                    newRadarMessage.setName(child.getStringValue());
                }else if(nodeName.equals("国家地区内码")){
                    newRadarMessage.setCountryId(child.getStringValue());
                }else if(nodeName.equals("敌我属性内码")){
                    newRadarMessage.setFofId(child.getStringValue());
                }else if(nodeName.equals("威胁等级内码")){
                    newRadarMessage.setThreatLevelId(child.getStringValue());
                }else if(nodeName.equals("用途")){
                    newRadarMessage.setPurpose(child.getStringValue());
                }else if(nodeName.equals("部署信息")){
                    newRadarMessage.setDeployInformation(child.getStringValue());
                }else if(nodeName.equals("活动区域描述")){
                    newRadarMessage.setActiveAreaDescription(child.getStringValue());
                }else if(nodeName.equals("生产商")){
                    newRadarMessage.setManufacturer(child.getStringValue());
                }else if(nodeName.equals("研制年代")){
                    newRadarMessage.setProductYear(child.getStringValue());
                }else if(nodeName.equals("备注")){
                    newRadarMessage.setRemark(child.getStringValue());
                }else if(nodeName.equals("型号内码")){
                    newRadarMessage.setTypeId(child.getStringValue());
                }


            }
        }

    } catch (DocumentException e) {
        e.printStackTrace();
    }
    return newRadarMessage;
}
}

4.ParseOver

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值