通过java代码读取xml文件再控制台输出
1 读取xml文件代码
package com.wx.xmlToMap;
import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
public class XmlToMap {
public static void main(String[] args) throws Exception {
//创建一个文档解析器工厂
DocumentBuilderFactory fac= DocumentBuilderFactory.newInstance();
//用上面的工厂创建一个文档解析器
DocumentBuilder builder=fac.newDocumentBuilder();
//用上面的文档解析器解析一个文件放到document对象里
Document doc=builder.parse("src/applicationContext.xml");
//获取节点的所有子节点,注意会把所有换行符也解析为子节点
Element root = doc.getDocumentElement();//获取根节点
System.out.println("根节点名称:"+root.getNodeName());
NodeList nodeList2=root.getChildNodes();//获取根节点下的孩子节点
if(nodeList2 != null){
for(int i = 0; i < nodeList2.getLength();i++){ //遍历二级节点 user
Node node2 = nodeList2.item(i);
//System.out.println(user.getNodeName());
if(node2.getNodeType() == Node.ELEMENT_NODE){ //判断子节点是否是元素节点
//如果是元素节点,获取节点的属性值
System.out.print(node2.getNodeName()+"节点:");
NamedNodeMap nodeMap2= node2.getAttributes(); //获取每个元素节点的属性对象
if(nodeMap2 != null && nodeMap2.getLength() > 0){ //判断二级节点有没有属性
for(int j = 0; j < nodeMap2.getLength(); j++){
Node nodeMap2Attr = nodeMap2.item(j); //获取元素节点的属性名
System.out.print(nodeMap2Attr.getNodeName()+":"+nodeMap2Attr.getNodeValue()+";");//获取元素节点的属性名
//遍历每一个元素节点的属性值
//System.out.println("第"+(j+1)+"个"+user.getNodeName());
}
}
System.out.println();
NodeList nodeList3 = node2.getChildNodes();//便利2级节点 ,获取三级节点 name age sex
if(nodeList3 != null && nodeList3.getLength() > 0){
for(int k = 0; k < nodeList3.getLength(); k++){ //遍历三级节点
Node node3 = nodeList3.item(k);
NamedNodeMap nodeMap3 = node3.getAttributes();
if(nodeMap3 != null && nodeMap3.getLength() > 0){//判断3级节点属性是否为空
System.out.print(node3.getNodeName()+"节点:");
for(int m = 0; m < nodeMap3.getLength(); m++){
Node nodeMap3Attr = nodeMap3.item(m);
System.out.print(nodeMap3Attr.getNodeName()+":"+nodeMap3Attr.getNodeValue()+";");
}
System.out.println();
NodeList nodeList4 = node3.getChildNodes();
if(nodeList4 != null && nodeList4.getLength() > 0){ //判断是否有四级节点
//遍历4级节点
for(int n = 0; n < nodeList4.getLength(); n++){
Node node4 = nodeList4.item(n);
NamedNodeMap nodeMap4 = node4.getAttributes();
//查看节点属性
if(nodeMap4 != null && nodeMap4.getLength() > 0){//判断四级节点有没有属性
System.out.print(node4.getNodeName()+"节点:");
for(int l = 0; l < nodeMap4.getLength(); l++){
Node nodeMap4Attr = nodeMap4.item(l);
System.out.print(nodeMap4Attr.getNodeName()+":"+nodeMap4Attr.getNodeValue()+";");
}
System.out.println();
}
}
}
}else{
if(node3.getNodeType() == Node.ELEMENT_NODE){
System.out.println(node3.getNodeName()+":"+node3.getFirstChild().getNodeValue());
}
}
}
System.out.println();
}
}
}
}
}
}
2. xml文件
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<users>
<user email="www.baidu.com" AA="aa">
<name>张三</name>
<age>18</age>
<sex>男</sex>
</user>
<user phone="123455">
<name>李四</name>
<age>16</age>
<sex>女</sex>
</user>
<user pather="西晋">
<name>王五</name>
<age>25</age>
<sex>不明</sex>
</user>
<bean id="ClientLogic" class="com.idt.ios.platform.app.logic.impl.ClientLogicImpl">
<property name="platformLogger" ref="platformLogger" />
<property name="platformService" ref="platformService" />
<property name="openMessageCenter" value="true" />
<dwr:remote javascript="ClientLogic">
<dwr:filter class="com.idt.ios.platform.app.filter.DwrFilter"></dwr:filter>
</dwr:remote>
</bean>
</users>
3.输出结果