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
网友评论