dom4j解析xml实战
文章目录
前言所谓的复杂xml解析思路解析实战
1.第一步引入 dom4j2.引入我的xml解析工具类3.开始解析测试类
4.查看效果:
前言
最近有个同事说一个xml解析,说是很复杂。然后让我给看看。我给解析完了。现在分享下,希望如果遇到同样问题的朋友随时可以借鉴参考。
所谓的复杂xml
000009459 SY1 000009459 CS 000008 5 20210824 2021-02-01T00:00:00+08:00 2029-02-02T00:00:00+08:00 1 0 2021-08-24T16:12:01+08:00 xxx P 5 0 0 0 0 0 0 20500 CSP0058229 SY1 JD-2022-05-24-0003 620 CS 020100003 8 2022-403 2021-02-01T00:00:00+08:00 2029-03-03T00:00:00+08:00 1 0 2022-05-24T10:35:15+08:00 xx P 10 0 0 0 0 0 0 26174 CSP0058229 SY1 JD-2022-05-24-0003 620 CS 020100003 2 20323-1 2021-02-03T00:00:00+08:00 2029-04-02T00:00:00+08:00 1 0 2022-05-24T10:35:15+08:00 xxxxx P 10 0 0 0 0 0 0 26175
解析思路
使用dom4j技术,以 >为标示符,进行分割,获取到想要获取数据的上一层,然后通过getElement获取一个元素或者getElements获取一组相同标签数据。
解析实战
1.第一步引入 dom4j
org.dom4j dom4j 2.1.3
2.引入我的xml解析工具类
import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.XMLWriter;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.List;/** * Dom4j读取Element * * @author hfl */public class XmlUtil { private static Logger logger = LoggerFactory.getLogger(XmlUtil.class.getName()); public static List getElements(Document document, String path) { return getElement(document, path).elements(); } public static Element getElement(Document document, String path) { String[] paths = path.split(">"); Element result = document.getRootElement(); for (String item : paths) { try { result = result.element(item); } catch (Exception e) { logger.error("get element error: ", e); } } return result; } public static String getValue(Document document, String path) { String[] paths = path.split(">"); Element result = document.getRootElement(); for (String item : paths) { try { result = result.element(item); } catch (Exception e) { logger.error("get element error: ", e); } } return result.getText(); } public static Document create() { // 创建一个xml文档 Document doc = DocumentHelper.createDocument(); Element university = doc.addElement("university"); university.addAttribute("name", "tsu"); // 注释 university.addComment("这个是根节点"); Element college = university.addElement("college"); college.addAttribute("name", "cccccc"); college.setText("text"); return doc; } public static void write(Document doc) { try { File file = new File("src/dom4j-modify.xml"); if (file.exists()) { file.delete(); } file.createNewFile(); XMLWriter out = new XMLWriter(new FileWriter(file)); out.write(doc); out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } }}
3.开始解析测试类
@Slf4jpublic class DomTest { @Test public void xmlToList() throws Exception { String path = "D:\\comp\\springboot2\\02\\vehicle-business\\vehicle-business-service\\src\\test\\java\\com\\wuzheng\\vehicle\\business\\domtest\\xmltest.xml"; Document dom = new SAXReader().read(new File(path)); List elist = XmlUtil.getElements(dom, "getOutptTplAsnResult>diffgram>NewDataSet"); for (Element element : elist) { log.info("recordlist ----------------"); Map map = element.elements().stream().collect(Collectors.toMap(Element::getName, Element::getTextTrim)); log.info("recordlist = {}", new Gson().toJson(map)); } }}
4.查看效果:
3条全部解析完毕!!!
大功告成!!
大功告成!!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~