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