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