•   欢迎来到21NN网.
  •   请记住本站网址www.21nn.cn

有关XML剖析中DOM剖析的细致引见【XML教程】,DOM

摘要: 一、观点xml文件多用于信息的形貌,所以在取得一个xml文档以后根据xml中的元素掏出对应的信息就是xml的剖析。Xml剖析有两种体式格局,一种是DOM剖析,另一种是SAX剖析,两种操纵的体式格局...

一、观点

xml文件多用于信息的形貌,所以在取得一个xml文档以后根据xml中的元素掏出对应的信息就是xml的剖析。Xml剖析有两种体式格局,一种是DOM剖析,另一种是SAX剖析,两种操纵的体式格局如图。

二、DOM剖析

基于DOM剖析的xml剖析器是将其转换为一个对象模子的鸠合,用树这类数据构造对信息举行贮存。经由过程DOM接口,应用顺序能够在任何时刻接见xml文档中的任何一部分数据,因而这类应用DOM接口接见的体式格局也被称为随机接见。

这类体式格局也有缺点,由于DOM剖析器将全部xml文件转换为了树存放在内存中,当文件构造较大或许数据较庞杂的时刻,这类体式格局对内存的请求就比较高,且关于构造庞杂的树举行遍历也是一种异常耗时的操纵。不过DOM所采纳的树构造与xml存储信息的体式格局相吻合,同时其随机接见还可应用,所以DOM接口照样具有普遍的使用价值。

这里我们举个栗子来申明xml转换为树的数据构造。

<?xml version="1.0" encoding="GBK"?>
<address>
	<linkman>
		<name>Van_DarkHolme</name>
		<email>van_darkholme@163.com</email>
	</linkman>
	<linkman>
		<name>Bili</name>
		<email>Bili@163.com</email>
	</linkman>
</address>

将该xml转换为树的构造为:

DOM剖析中有以下4个中心操纵接口

Document:此接口代表了全部xml文档,示意为全部DOM的根,即为该树的进口,经由过程该接口能够接见xml中一切元素的内容。其经常使用要领以下。

(注:上述图中虽未画出,然则name和email的属性也分别为一个节点)

Document经常使用要领

Node:此接口在全部DOM树中有着无足轻重的职位,DOM操纵的中心接口都继续于Node(Document、Element、Attr)。在DOM树中,每个Node接口代表了一个DOM树节点

Node接口经常使用要领

NodeList:此接口示意一个点的鸠合,平常用于有序关联的一组节点。

NodeList经常使用要领

NamedNodeMap:此接口示意一组节点和其唯一称号对应的逐一关联,重要用于节点属性的示意

除了以上四个中心接口外,假如一个顺序须要举行DOM剖析操纵,则须要根据以下步骤举行:

1. 竖立DocumentBuilderFactor,用于取得DocumentBuilder对象:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

2. 竖立DocumentBuidler:

DocumentBuilder builder = factory.newDocumentBuilder();

3. 竖立Document对象,猎取树的进口:

Document doc = builder.parse(“xml文件的相对路径或许绝对路径”);

4. 竖立NodeList:

NodeList n1 = doc.getElementByTagName(“读取节点”);

5. 举行xml信息猎取

public class DOMDemo01 {
	
	public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException{
		//竖立DocumentBuilderFactor,用于取得DocumentBuilder对象:
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		//2.竖立DocumentBuidler:
		DocumentBuilder builder = factory.newDocumentBuilder();
		//3.竖立Document对象,猎取树的进口:
		Document doc = builder.parse("src//dom_demo_02.xml");
		//4.竖立NodeList:
		NodeList node = doc.getElementsByTagName("linkman");
		//5.举行xml信息猎取
		for(int i=0;i<node.getLength();i++){
			Element e = (Element)node.item(i);
			System.out.println("姓名:"+
					e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
			System.out.println("邮箱:"+
					e.getElementsByTagName("email").item(0).getFirstChild().getNodeValue());
		}	
		
	}
}

上述代码则从第四处最先剖析:

经由过程doc.getElementByTagName(“linkman”)我们取得了一个NodeList,上述xml文件中包含了两个linkman的节点,所以这里NodeList中包含了两个Node(都是linkman节点),然后经由过程轮回的要领来猎取xml文件中的信息。

Element e = (Element)node.item(i)取得了linkman节点,即e这里指向了linkman

e.getElementTagName(“name”).item(0).getFirstChild().getNodeValue();

getElementTagName(“name”);取得了该linkman下的一切name节点(实在就1个);

Item(0);取第一个Name节点(就一个);

getFristChild();猎取name节点下的文本节点,即内容van地点的节点(上面已提到过,文本内容也是一个零丁的节点,Document要领列表中的createTextNode()就是建立文本节点);

getNodeValue()取得文本节点的值:van_darkholme;

跟多相干题目请接见ki4网:XML视频教程

以上就是有关XML剖析中DOM剖析的细致引见的细致内容,更多请关注ki4网别的相干文章!

分享到:

发表评论

评论列表

还没有评论,快来说点什么吧~

公众号二维码

微信公众号