美文网首页
java利用dom4j读取xml

java利用dom4j读取xml

作者: haiyong6 | 来源:发表于2021-09-18 14:11 被阅读0次

java读取xml有多种方法,dom4j是比较适合的一种,截止发文dom4j的最新版是1.6.1。

grade引入:compile("dom4j:dom4j:1.6.1")

比如现在我们有个test.xml是如下这样的结构:

<Setting Name="settingName" Method="setingMethod" ActionType="SET/GET" >
  <property Name="propertyName" value="propertyValue" Type="string" />
  <a>这是a标签里面的内容</a>
</Setting>

可以通过如下代码来解析xml:

public static void main(String[] args) throws DocumentException {
        //创建reader对象
        SAXReader reader = new SAXReader();
        //加载xml
        Document document = reader.read(new File("D://upload/test.xml"));
        //获取根节点
        Element rootElement = document.getRootElement();
        System.out.println(rootElement.getName());
        List<Attribute> rootAttributes = rootElement.attributes();
        for(Attribute attribute : rootAttributes) {
            System.out.println(attribute.getName() + " : " + attribute.getValue());
        }
        System.out.println("====第二层====");
        Iterator iterator = rootElement.elementIterator();
        while(iterator.hasNext()) {
            Element element = (Element)iterator.next();
            List<Attribute> attributes = element.attributes();
             
            for(Attribute attribute : attributes) {
                System.out.println(attribute.getName() + ":" + attribute.getValue());
            }
            System.out.println("便签里面的值==" + element.getText());
            
            Iterator iterator1 = element.elementIterator();
            while(iterator1.hasNext()) {
                Element childElement = (Element)iterator.next();
                System.out.println("节点名:" + childElement.getName() + " 节点值:" + childElement.getStringValue());
            }
            
        }
        
    }

运行结果为:

Setting
Name : settingName
Method : setingMethod
ActionType : SET/GET
====第二层====
Name:propertyName
value:propertyValue
Type:string
便签里面的值==
便签里面的值==这是a标签里面的内容

如代码所示,步骤基本是这样:
1.创建reader对象
2.利用reader对象加载进xml转化为Docment对象
3.利用Docment对象获取Element节点对象
4.Element节点对象中可以通过getName()方法获取标签的名称,getText()方法获取标签里面的值,attributes()方法获取标签里面所有的属性返回List<Attribute>对象,Attribute对象的getName() 和getValue()方法分别获取属性的key和value,elementIterator()方法获取标签的子节点Iterator对象,遍历Iterator获取子节点的Element对象,以此往复......

有了这些方法完全可以把标准的xml文件通过自己写代码转化成json格式,比如这个test.xml转化成json格式即是如下这样:

{
  "Setting": {
    "-Name": "settingName",
    "-Method": "setingMethod",
    "-ActionType": "SET/GET",
    "property": {
      "-Name": "propertyName",
      "-value": "propertyValue",
      "-Type": "string"
    },
    "a": "这是a标签里面的内容"
  }
}

转化代码就省略不写了,可以写一个通用方法实现这个xml转json的功能,用到的时候可以现写,有兴趣的同学可以自行根据业务实现一下。

参考:https://blog.csdn.net/m0_37499059/article/details/80505567

相关文章

网友评论

      本文标题:java利用dom4j读取xml

      本文链接:https://www.haomeiwen.com/subject/wozegltx.html