Dom4j解析XML

前言:

XML文件可以用来作为一种小型数据库存在,但更多时候在项目中都是用来当成配置文件用的,也就避免不了对XML文件的增删改查操作。

在java中,解析XML文件的方式大致分为两种:DOM解析SAX解析

先来说DOM解析方式:xml解析器一次性把整个xml文档加载进内存,然后在内存中构建一颗Document的对象树,通过Document对象,得到树上的节点对象,通过节点对象访问(操作)到xml文档的内容

用的较为多的是Dom4j工具(非官方)解析,简单介绍下Dom4j的使用,具体API文档请下载

0.SpringBoot引入Dom4j

pom文件中添加如下依赖


   dom4j
   dom4j
   1.6.1

1.构建XML

代码:

Element root = DocumentHelper.createElement("Activity"); //创建XML文档
root.addAttribute("Type", "4");                          //添加属性
root.addAttribute("Version", "1");
root.addAttribute("Id", id);
root.addAttribute("X", "340");
root.addAttribute("Y", "170");
root.addAttribute("Width", "120");
root.addAttribute("Height", "70");
root.addAttribute("Name", "1");
Element element = root.addElement("DecisionItemList");   //添加下一级元素

for (DecisionItem item : decisionItemList)
{
    Element x = element.addElement("DecisionItem");
    x.addAttribute("Name", "条件");
    x.addAttribute("ToActivityId", item.getToActivityId());
    x.addText(item.getExpression());                    //添加文本内容
}

结果:


    
        getPetdApplyuser()=="zhangsan"
        getPetdApplyuser()=="lisi"
    

 

2.String字符串解析为XML对象

XML字符串:


    
      
        getPetdApplyuser()=="zhangsan"
        getPetdApplyuser()=="lisi"
     
    

解析代码:

Document doc = DocumentHelper.parseText(xml);    //解析xml字符串为Document
Element root = doc.getRootElement();             //获取根节点
Iterator it = root.elementIterator("Activity");  //获取根节点下的所有Activity子节点
while (it.hasNext())                             //遍历子节点
{
    Element element = (Element)it.next();
    String id=element.attributeValue("Id");      //获取id属性
    List decisionItemList = new ArrayList();

    //获取元素DecisionItemList之下的 DecisionItem子节点
    Iterator it = element.element("DecisionItemList").elementIterator("DecisionItem");
    // 遍历子节点
    while (it.hasNext())
    {
        DecisionItem decisionItem = new DecisionItem();
        Element x = (Element)it.next();
        decisionItem.setName(x.attributeValue("Name"));
        decisionItem.setToActivityId(x.attributeValue("ToActivityId"));
        decisionItem.setExpression(x.getTextTrim()); //获取文本内容
        decisionItemList.add(decisionItem);
    }
}

 

更多功能参考(java操作XML文件):https://www.cnblogs.com/fnz0/p/5538459.html

 

你可能感兴趣的:(SpringBoot)