这篇文章主要介绍了java dom解析xml文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
代码如下
import java.io.ioexception;
import javax.xml.parsers.*;
import org.w3c.dom.document;
import org.w3c.dom.element;
import org.w3c.dom.namednodemap;
import org.w3c.dom.node;
import org.w3c.dom.nodelist;
import org.xml.sax.saxexception;
public class domtest {
public static void main(string[] args) throws parserconfigurationexception, saxexception, ioexception {
//创建一个documentbuilderfactory对象
documentbuilderfactory dbf=documentbuilderfactory.newinstance();
//创建一个doucumentbuild对象
documentbuilder db=dbf.newdocumentbuilder();
//解析对应的xml文件
document doc=db.parse("tes.xml");
//根据标签名获取node节点list
nodelist nodelist=doc.getelementsbytagname("book");
system.out.println("共有"+nodelist.getlength()+"本书");
//遍历每一个book节点
for(int i=0;i
system.out.println("第"+i+"本书");
//获取个book节点
//使用node类型获取book
node book=nodelist.item(i);
system.out.println("name: "+book.getnodename()+" value: "+book.getnodevalue()+" type: "+book.getnodetype());
//获取node节点中的属性
namednodemap attrs= book.getattributes();
//遍历获取属性
for(int j=0;j
node x=attrs.item(j);
//system.out.println(x.getnodename()+" "+x.getnodevalue()+" "+x.getnodetype());
}
//使用element对象获取节点
element node =(element) nodelist.item(i);
//使用element对象下的getattribute方法可以获取指定名字的属性值
string id=node.getattribute("id");
system.out.println(id);
string type=node.getattribute("type");
system.out.println(type);
//使用node节点下的getchildnode可以获取nodelist数组,以此进行循环解析
nodelist childnode=book.getchildnodes();
for(int j=0;j……算一个节点,所以共有9个节点,而这些节点中,只有对象节点是我们需要的
node x=childnode.item(j);
if(x.getnodetype()==node.element_node){//当节点类型为element时,获取该节点
//获取element类型的节点名
system.out.println("节点"+j+"的名字:"+x.getnodename()+" 值:/"+x.getlastchild().getnodevalue()+"/种类为"+x.getlastchild().getnodetype());//xyz,xyz属于的子节点,使用getfirstchild或getlastnode效果相同
system.out.println("节点"+j+"的名字:"+x.getnodename()+" 值:/"+x.gettextcontent()+"/种类为"+x.getnodetype());//gettextcontent方法可以获取节点中所有的text内容 将xyz改为123xyz,会获取到xyz123
}
}
}
}
}
//为了将获取到的xml文件中内容保存下来,可以将内容保存到对象数组中一次来存储数据
冰与火之歌
乔治马丁
2014
80
安徒生童话
2004
79
english
注意点
1 空白换行符也算节点,所以遍历节点时需要注意这些无用的节点会混在list中
2 text类节点返回name值都是#text,而element类节点返回value值都是null,需要注意
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。
希望与广大网友互动??
点此进行留言吧!