dom4j解析xml
待解析的字符串:
第一步:引用jar包:
org.dom4j
dom4j
2.1.3
第二步:定义转换对象:
package com.rongyi.platform.game.web.controller; import lombok.Data; import java.io.Serializable; /** * @desc: * @author: 毛会懂 **/ @Data public class CodeVO implements Serializable { private String Company; private String name; private String phone; }
第三步:转换代码
package com.rongyi.platform.game.web.controller; import com.alibaba.fastjson.JSONArray; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * @desc: * @author: 毛会懂 **/ public class Xml3Controller { public static void main(String[] args) { String str = "\n" + "\n" + "\n" + " \n" + "\n"; List\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " list = splitXml(str, "abc"); System.out.print(JSONArray.toJSONString(list)); } /** * 把元素解析为对象 * xmlStr 要解析的xml字符串 * @return */ public static List splitXml(String xmlStr, String company) { List list = new ArrayList<>(); Document document; try { document = DocumentHelper.parseText(xmlStr); Element root = document.getRootElement(); //返回包含子元素的迭代器 Iterator it = root.elementIterator(); while(it.hasNext()) { CodeVO vo = new CodeVO(); vo.setCompany(company); Element element = (Element) it.next(); vo.setName(element.attributeValue("username")); vo.setPhone(element.attributeValue("userphone")); list.add(vo); } } catch (DocumentException e) { e.printStackTrace(); } return list; } }
复杂一点的:
待解析的字符串:
<RESULT code="1" msg="">
<worksheet>
<faultinfo>暂无此消息faultinfo>
<faultclassify>
<dworkerfaultclassify classifyname="车端连接"/>
<dworkerfaultclassify classifyname="车体及车体附件"/>
<dworkerfaultclassify classifyname="电气及配电盘"/>
<dworkerfaultclassify classifyname="电务车载"/>
<dworkerfaultclassify classifyname="辅助供电"/>
<dworkerfaultclassify classifyname="高压供电"/>
<dworkerfaultclassify classifyname="给水卫生"/>
<dworkerfaultclassify classifyname="供风及制动"/>
<dworkerfaultclassify classifyname="驾驶设施"/>
<dworkerfaultclassify classifyname="空调供暖"/>
<dworkerfaultclassify classifyname="门窗系统"/>
<dworkerfaultclassify classifyname="内装系统"/>
<dworkerfaultclassify classifyname="其他"/>
<dworkerfaultclassify classifyname="牵引系统"/>
<dworkerfaultclassify classifyname="网络及控制"/>
<dworkerfaultclassify classifyname="烟火"/>
<dworkerfaultclassify classifyname="影视信息广播"/>
<dworkerfaultclassify classifyname="转向架"/>
faultclassify>
<faultreason>
<dworkerfaultreason reasonname="供方责任"/>
<dworkerfaultreason reasonname="公司产品设计"/>
<dworkerfaultreason reasonname="公司产品工艺"/>
<dworkerfaultreason reasonname="公司产品制造"/>
<dworkerfaultreason reasonname="用户提供产品"/>
<dworkerfaultreason reasonname="用户责任"/>
<dworkerfaultreason reasonname="外部运用"/>
<dworkerfaultreason reasonname="其他"/>
faultreason>
<faultduty>
<dworkerfaultduty dutyname="K" username="" userphone="" card=""/>
<dworkerfaultduty dutyname="W" username="" userphone="" card=""/>
<dworkerfaultduty dutyname="采购部" username="" userphone="" card=""/>
<dworkerfaultduty dutyname="技术工程部" username="" userphone="" card=""/>
<dworkerfaultduty dutyname="技术中心" username="" userphone="" card=""/>
<dworkerfaultduty dutyname="事业部" username="" userphone="" card=""/>
<dworkerfaultduty dutyname="物流中心" username="" userphone="" card=""/>
<dworkerfaultduty dutyname="责任单位" username="" userphone="" card=""/>
<dworkerfaultduty dutyname="转向架" username="" userphone="" card=""/>
<dworkerfaultduty dutyname="安庆三维" username="张婧1" userphone="176858941461" card="3702831987112458691" userid="e2a979fb-fbd8-4fd1-b4c9-c31f72cc8dfc"/>
<dworkerfaultduty dutyname="安庆三维" username="章1" userphone="17689862546" card="123456" userid="224c5167-bb91-4b12-b93a-333984a847f5"/>
<dworkerfaultduty dutyname="航测205-魏小凯" username="李帅" userphone=