我早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);