java是怎么读xml文件-dom解析篇

我早tm就想做一个java操作xml的学习篇了,一直都没有时间(其实是借口),我想来想去,为了要让大家少走弯路,决定做一个系列篇,希望大家支持,多多评论!提出你的宝贵意见····

  

dom解析篇,首先上代码!!(大家最喜欢了)

public static void main(String[] args) {
			readXmlDom();
	}
	
	static void readXmlDom() {
		try{
		DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); //获取工厂
		DocumentBuilder db=dbf.newDocumentBuilder();                  //获取builder
		Document doc=db.parse("D:\\fileDemo\\user.xml");            //获取docment
		Element root=doc.getDocumentElement();    
		System.out.println(root.getNodeName());
		NodeList list=root.getChildNodes();
		System.out.println(list.getLength());
	     for (int i = 0; i < list.getLength(); i++) {
             Node child = list.item(i);
              System.out.println(child.getNodeName());
	     }
	     }catch (Exception e) {
		}
	}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<people><name type="englise">linbulu</name><sex>boy</sex></people>

好了,dom解析是最简单的,是不是最常用我是不知道了,他是jdk自带的api,我们不需要另外下载jar包,我们先看看他的用法吧:

1、获取documentBuilder的工厂对象实例(newInstance) 
2、用工厂对象生产出一个DocumentBuilder
3、获取document

 我们可以看到,对于dom解析来说,Document就是他的核心,咱们首要任务就是获取Document.

其次,他比较重要的类我们上面都有:

1、Element,经常要用的,比如刚才我们用到的 Element root=doc.getDocumentElement();就是获取到了

people这个dom节点。

2、Node,是最重要的一个知识点,大家要记一下下面常用的用法。node这个跟element很像,Node root=doc.getFirstChild();可以跟上面的那句替换。我们看看这个

 2.1 node.getChildNodes(),上面有,获取元素的所有子元素

 2.2 node.getTextContent(),上面代码有,获取元素的内容

 2.3 node.getAttributes(),我们看上面的那个xml,里边有个type="english",我们怎么去获取呢?

 

static void readXmlDom() {
		try{
		DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); //获取工厂
		DocumentBuilder db=dbf.newDocumentBuilder();                  //获取builder
		Document doc=db.parse("D:\\fileDemo\\user.xml");            //获取docment
		Node root =doc.getFirstChild();                               //根节点
		NodeList list=root.getChildNodes();                
	     for (int i = 0; i < list.getLength(); i++) {
             Node child = list.item(i);
             if(child.getNodeName().equals("name")){
            	  NamedNodeMap map= child.getAttributes();
            	  Node typeNode= map.getNamedItem("type");
            	  System.out.println(typeNode.getTextContent());
             }
	     }
	     }catch (Exception e) {
	    	 e.printStackTrace();
		}
	}

  

  

3、Nodelist相当于是List<Node>,不过他要这么遍历:nodelist.item(int i);

 

猜你喜欢

转载自linbulu.iteye.com/blog/2295266