2019-08-13

通过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.输出结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值