DOM解析之Document,Node,NodeList,NamedNodeMap

利用VC++与MSXML解析XML文档 一、文档对象模型(DOM)  DOM是Document Object Model(文档对象模型)的简称,是对XML文档进行应用开发、编程的应用程序接口(API)。作为W3C公布的一种跨平台、与语言无关的接口规范,DOM提供了在不同环境和应用中的标准程序接口,可以用任何语言实现。  DOM采用对象模型和一系列的接口来描述XML文档的内容和结构,即利用对象把文档模型化。这种对象模型实现的基本功能包括: 阅读详情

  

          在DOM接口规范中,有四个基本的接口:Document,Node,NodeList以及NamedNodeMap。在这四个基本接口中,Document接口是对文档进行操作的入口,它是从Node接口继承过来的。Node接口是其他大多数接口的父类,象Document,Element,Attribute,Text,Comment等接口都是从Node接口继承过来的。NodeList接口是一个节点的集合,它包含了某个节点中的所有子节点。NamedNodeMap接口也是一个节点的集合,通过该接口,可以建立节点名和节点之间的一一映射关系,从而利用节点名可以直接访问特定的节点。 

1.Document

Document接口代表了整个XML/HTML文档,因此,它是整棵文档树的根,提供了对文档中的数据进行访问和操作的入口。 

2.NodeList

NodeList接口提供了对节点集合的抽象定义,它并不包含如何实现这个节点集的定义。NodeList用于表示有顺序关系的一组节点,比如某个节点的子节点序列。另外,它还出现在一些方法的返回值中,例如getElementsByTagName。 

在DOM中,NodeList的对象是"live"的,换句话说,对文档的改变,会直接反映到相关的NodeList对象中。例如,如果通过DOM获得一个NodeList对象,该对象中包含了某个Element节点的所有子节点的集合,那么,当再通过DOM对Element节点进行操作(添加、删除、改动节点中的子节点)时,这些改变将会自动地反映到NodeList对象中,而不需DOM应用程序再做其他额外的操作。 

NodeList中的每个item都可以通过一个索引来访问,该索引值从0开始。

3.NamedNodeMap

实现了NamedNodeMap接口的对象中包含了可以通过名字来访问的一组节点的集合。不过注意,NamedNodeMap并不是从NodeList继承过来的,它所包含的节点集中的节点是无序的。尽管这些节点也可以通过索引来进行访问,但这只是提供了枚举NamedNodeMap中所包含节点的一种简单方法,并不表明在DOM规范中为NamedNodeMap中的节点规定了一种排列顺序。 

NamedNodeMap表示的是一组节点和其唯一名字的一一对应关系,这个接口主要用在属性节点的表示上。 与NodeList相同,在DOM中,NamedNodeMap对象也是"live"的。  

4.Dom对象

一切都是节点(对象) 

.Node对象:DOM结构中最为基本的对象 

•Document对象:代表整个XML的文档 

•NodeList对象:包含一个或者多个Node的列表 

•Element对象:代表XML文档中的标签元素 

5.dom解析xml步骤

  1. import javax.xml.parsers.*;   
  2.   
  3. import org.w3c.dom.*;   
  4.   
  5. public class dom {   
  6.   
  7. public static void main(String args[]){   
  8.   
  9. try{   
  10.   
  11. //建立解析器工厂   
  12.   
  13. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();   
  14.   
  15. //获得解析器   
  16.   
  17. DocumentBuilder builder=factory.newDocumentBuilder();   
  18.   
  19. Document doc=builder.parse("candidate.xml");   
  20.   
  21. NodeList nl =doc.getElementsByTagName("PERSON");   
  22.   
  23. for (int i=0;i<nl.getLength();i++){   
  24.   
  25. Element node=(Element) nl.item(i);   
  26.   
  27. System.out.print("NAME: ");   
  28.   
  29. System.out.println (node.getElementsByTagName("NAME").item(0).getFirstChild().getNodeValue());   
  30.   
  31. ……   
  32.   
  33. System.out.println();   
  34.   
  35. }   
  36.   
  37. }catch(Exception e){e.printStackTrace();}   
  38.   
  39. }   
  40.   
  41. }   
import javax.xml.parsers.*; 

import org.w3c.dom.*; 

public class dom { 

public static void main(String args[]){ 

try{ 

//建立解析器工厂

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 

//获得解析器

DocumentBuilder builder=factory.newDocumentBuilder(); 

Document doc=builder.parse("candidate.xml"); 

NodeList nl =doc.getElementsByTagName("PERSON"); 

for (int i=0;i<nl.getLength();i++){ 

Element node=(Element) nl.item(i); 

System.out.print("NAME: "); 

System.out.println (node.getElementsByTagName("NAME").item(0).getFirstChild().getNodeValue()); 

…… 

System.out.println(); 

} 

}catch(Exception e){e.printStackTrace();} 

} 

} 


程序详解:

1)DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); 

•我们在这里使用DocumentBuilderFacotry的目的是为了创建与具体解析器无关的程序,当DocumentBuilderFactory 类的静态方法newInstance()被调用时,它根据一个系统变量来决定具体使用哪一个解析器。又因为所有的解析器都服从于JAXP所定义的接口,所 以无论具体使用哪一个解析器,代码都是一样的。所以当在不同的解析器之间进行切换时,只需要更改系统变量的值,而不用更改任何代码。这就是工厂所带来的好处。 

2)•DocumentBuilder db = dbf.newDocumentBuilder(); 

•当获得一个工厂对象后,使用它的静态方法newDocumentBuilder()方法可以获得一个DocumentBuilder对象,这个对象代表了具体的DOM解析器。但具体是哪一种解析器,微软的或者IBM的,对于程序而言并不重要 

3)然后,我们就可以利用这个解析器来对XML文档进行解析了 

•Document doc = db.parse("c:/xml/message.xml"); 

•DocumentBuilder的parse()方法接受一个XML文档名作为输入参数,返回一个Document对象,这个Document对象就代表了一个XML文档的树模型。以后所有的对XML文档的操作,都与解析器无关,直接在这个Document对象上进行操作就可以了。而具体对Document操作的方法,就是由DOM所定义的了 

4).从上面得到的Document对象开始,我们就可以开始我们的DOM解析了。使用Document对象的getElementsByTagName()方法,我们可以得到一个NodeList对象,一个Node对象代表了一个XML文档中的一个标签元素,而NodeList对象,所代表的是一个Node对象的列表 

NodeList nl = doc.getElementsByTagName("message"); •我们通过这样一条语句所得到的是XML文档中所有<message>标签对应的Node对象的一个列表。然后,我们可以使用NodeList对象的item()方法来得到列表中的每一个Node对象 

•Node my_node = nl.item(0); 

5).当一个Node对象被建立之后,保存在XML文档中的数据就被提取出来并封装在这个Node中了。在这个例子中,要提取Message标签内的内容,我们通常会使用Node对象的getNodeValue()方法 

•Stringmessage

=my_node.getFirstChild().getNodeValue(); 

注意:请注意,这里还使用了一个getFirstChild()方法来获得message下面的第一个子Node对象。虽然在message标签下面除了文本外并没有其它子标签或者属性,但是我们坚持在这里使用getFirstChild()方法,这主要和W3C对DOM的定义有关。W3C把标签内的文本部分也定义成一个Node,所以先要得到代表文本的那个Node,我们才能够使用getNodeValue()来获取文本的内容

6.dom基本对象详解

DOM的基本对象有5个:Document,Node,NodeList,Element和Attr 

Document对象代表了整个XML的文档,所有其它的Node,都以一定的顺序包含在Document对象之内,排列成一个树形的结构,程序员可以通过遍历这颗树来得到XML文档的所有的内容,这也是对XML文档操作的起点。我们总是先通过解析XML源文件而得到一个Document对象,然后再来执行后续的操作。此外,Document还包含了创建其它节点的方法,比如createAttribute()用来创建一个Attr对象。它所包含的主要的方法有 

1).createAttribute(String):用给定的属性名创建一个Attr对象,并可在其后使用setAttributeNode方法来放置在某一个Element对象上面。 

•2)createElement(String):用给定的标签名创建一个Element对象,代表XML文档中的一个标签,然后就可以在这个Element对象上添加属性或进行其它的操作。 

•3)createTextNode(String):用给定的字符串创建一个Text对象,Text对象代表了标签或者属性中所包含的纯文本字符串。如果在一个标签内没有其它的标签,那么标签内的文本所代表的Text对象是这个Element对象的唯一子对象。 

4)getElementsByTagName(String):返回一个NodeList对象,它包含了所有给定标签名字的标签。 

5)getDocumentElement():返回一个代表这个DOM树的根元素节点的Element对象,也就是代表XML文档根元素的那个对象。

7.Node对象所包含的主要的方法有 

•appendChild(org.w3c.dom.Node):为这个节点添加一个子节点,并放在所有子节点的最后,如果这个子节点已经存在,则先把它删掉再添加进去。 

•getFirstChild():如果节点存在子节点,则返回第一个子节点,对等的,还有getLastChild()方法返回最后一个子节点。 

•getNextSibling():返回在DOM树中这个节点的下一个兄弟节点,对等的,还有getPreviousSibling()方法返回其前一个兄弟节点。 

•getNodeName():根据节点的类型返回节点的名称。 

•getNodeType():返回节点的类型

.getNodeValue():返回节点的值。 

•hasChildNodes():判断是不是存在有子节点。 

•hasAttributes():判断这个节点是否存在有属性。 

•getOwnerDocument():返回节点所处的Document对象。 

•insertBefore(org.w3c.dom.Node new,org.w3c.dom.Node ref):在给定的一个子对象前再插入一个子对象。 

•removeChild(org.w3c.dom.Node):删除给定的子节点对象 

.replaceChild(org.w3c.dom.Node new,org.w3c.dom.Node old):用一个新的Node对象代替给定的子节点对象。 

•NodeList对象,顾名思义,就是代表了一个包含了一个或者多个Node的列表。可以简单的把它看成一个Node的数组,我们可以通过方法来获得列表中的元素: 

•getLength():返回列表的长度。 

•item(int):返回指定位置的Node对象 

8 Element对象代表的是XML文档中的标签元素,继承于Node,亦是Node的最主要的子对象。在标签中可以包含有属性,因而Element对象中有存取其属性的方法,而任何Node中定义的方法,也可以用在Element对象上面。 

•getElementsByTagName(String):返回一个NodeList对象,它包含了在这个标签中其下的子孙节点中具有给定标签名字的标签。 

•getTagName():返回一个代表这个标签名字的字符串。 

•getAttribute(String):返回标签中给定属性名称的属性的值。在这儿需要注意的是,因为XML文档中允许有实体属性出现,而这个方法对这些实体属性并不适用。这时候需要用到getAttributeNode()方法来得到一个Attr对象来进行进一步的操作 

•getAttributeNode(String):返回一个代表给定属性名称的Attr对象。 

9.Attr对象代表了某个标签中的属性。Attr继承于Node,但是因为Attr实际上是包含在Element中的,它并不能被看作是Element的子对象,因而在DOM中Attr并不是DOM树的一部分,所以Node中的getparentNode(),getpreviousSibling()和getnextSibling()返回的都将是null。也就是说,Attr其实是被看作包含它的Element对象的一部分,它并不作为DOM树中单独的一个节点出现。这一点在使用的时候要同其它的Node子对象相区别 

 

                                                                                               SAX解析

 

 

               SAX的全称是Simple APIs for XML,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方式。当使用SAX分析器对XML文档进行分析时,会触发一系列事件,并激活相应的事件处理函数,应用程序通过这些事件处理函数实现对XML文档的访问,因而SAX接口也被称作事件驱动接口。由于SAX分析器实现简单,对内存要求比较低,因此实现效率比较高,对于那些只需要访问XML文档中的数据而不对文档进行更改的应用程序来说,SAX分析器更为合适。  

 

             SAX(Simple APIs for XML),面向XML的简单APIs。使用DOM解析XML时,首先将XML文档加载到内存当中,然后可以通过随机的方式访问内存中的DOM树;SAX是基于事件而且是顺序执行的,一旦经过了某个元素,我们就没有办法再去访问它了,SAX不必事先将整个XML文档加载到内存当中,因此它占据内存要比DOM小,对于大型的XML文档来说,通常会使用SAX而不是DOM进行解析。 

SAX也是使用的观察者模式(类似于GUI中的事件)

 

图中最上方的SAXParserFactory用来生成一个分析器实例。XML文档是从左侧箭头所示处读入,当分析器对文档进行分析时,就会触发在DocumentHandler,ErrorHandler,DTDHandler以及EntityResolver接口中定义的回调方法。 

4.SAX是事件驱动的,文档的读入过程就是SAX的解析过程。在读入的过程中,遇到不同的项目,解析器会调用不同的处理方法。 

5.org.xml.sax.helpers.DefaultHandler类的方法 

项目 

处理方法 

文档开始 

startDocument() 

<PEOPLE> 

startElement() 

“Tony Blair” 

characters() 

</PEOPLE> 

endElement() 

文档结束 

endDocument() 

6.SAX方式提取XML文档内容信息示例

  1. package com.shengsiyuan.xml.sax;  
  2.   
  3. import java.io.File;  
  4.   
  5. import java.util.Stack;  
  6.   
  7. import javax.xml.parsers.SAXParser;  
  8.   
  9. import javax.xml.parsers.SAXParserFactory;  
  10.   
  11. import org.xml.sax.Attributes;  
  12.   
  13. import org.xml.sax.SAXException;  
  14.   
  15. import org.xml.sax.helpers.DefaultHandler;  
  16.   
  17. public class SaxTest2  
  18.   
  19. {  
  20.   
  21. public static void main(String[] args) throws Exception  
  22.   
  23. {  
  24.   
  25.                 //step1: 获得SAX解析器工厂实例   
  26.   
  27. SAXParserFactory factory = SAXParserFactory.newInstance();  
  28.   
  29.                 //step2: 获得SAX解析器实例   
  30.   
  31. SAXParser parser = factory.newSAXParser();  
  32.   
  33.                 //step3: 开始进行解析   
  34.   
  35. parser.parse(new File("student.xml"), new MyHandler2());  
  36.   
  37. }  
  38.   
  39. }  
  40.   
  41. class MyHandler2 extends DefaultHandler  
  42.   
  43. {  
  44.   
  45. private Stack<String> stack = new Stack<String>();  
  46.   
  47. private String name;  
  48.   
  49. private String gender;  
  50.   
  51. private String age;   
  52.   
  53. @Override  
  54.   
  55. public void startElement(String uri, String localName, String qName,  
  56.   
  57. Attributes attributes) throws SAXException  
  58.   
  59. {  
  60.   
  61. stack.push(qName);  
  62.   
  63. for(int i = 0; i < attributes.getLength(); i++)  
  64.   
  65. {  
  66.   
  67. String attrName = attributes.getQName(i);  
  68.   
  69. String attrValue = attributes.getValue(i);  
  70.   
  71. System.out.println(attrName + "=" + attrValue);  
  72.   
  73. }  
  74.   
  75. }  
  76.   
  77. @Override  
  78.   
  79. public void characters(char[] ch, int start, int length)  
  80.   
  81. throws SAXException  
  82.   
  83. {  
  84.   
  85. String tag = stack.peek();  
  86.   
  87. if("姓名".equals(tag))  
  88.   
  89. {  
  90.   
  91. name = new String(ch, start,length);  
  92.   
  93. }  
  94.   
  95. else if("性别".equals(tag))  
  96.   
  97. {  
  98.   
  99. gender = new String(ch, start, length);  
  100.   
  101. }  
  102.   
  103. else if("年龄".equals(tag))  
  104.   
  105. {  
  106.   
  107. age = new String(ch, start, length);  
  108.   
  109. }  
  110.   
  111. }  
  112.   
  113. @Override  
  114.   
  115. public void endElement(String uri, String localName, String qName)  
  116.   
  117. throws SAXException  
  118.   
  119. {  
  120.   
  121. stack.pop(); //表示该元素已经解析完毕,需要从栈中弹出   
  122.   
  123.   
  124. if("学生".equals(qName))  
  125.   
  126. {  
  127.   
  128. System.out.println("姓名:" + name);  
  129.   
  130. System.out.println("性别:" + gender);  
  131.   
  132. System.out.println("年龄:" + age);  
  133.   
  134. System.out.println();  
  135.   
  136. }  
  137.   
  138. }  
  139.   
  140. }  
转载: http://blog.youkuaiyun.com/csh624366188/article/details/7434531
基于python的排课表系统,用python编写排课系统 实现一个具体的课程管理系统。(5) 学生可以查看自己选上的课的成绩,以及各个课程的得分、绩点,并给出其平均绩点,但不允许查看年级其他人的成绩。(2) 学生定制专属课表,可以查看整个学期本人的课程安排,包括课程名称、上课时间、上课地点、任课老师、学分等等。(13) 系主任可以查看整个系的全部学生以及他们的平均绩点,可以对每个班进行排名,或者也可以对整个系进行排名。(15) 系主任可以查看整个学期所开设的所有课程,包括这些课程的全部详细信息。(1) 学生基本信息的查询,学生可以对本人的系统登陆密码进行修改。 阅读详情

相关推荐

uni踩坑笔记 - 离线打包调起微信分享后从微信返回APP时黑屏

apk能成功调起微信并进行分享操作,但分享完成后点击回到应用后应用出现黑屏的情况,并在约3-5秒后自动重启。

weixin_46737742的博客 5215

java中org.w3c.dom.Node接口文档说明

org.w3c.dom.Node 接口的方法文档提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

weixin_45645828的博客 1278

电流互感器的使用分析

有关电流互感器使用的注意事项,回头再看,耳目一新。

qq_46757048的博客 2万+

org.w3c.dom.Node

代码整合异常信息本地代码启动正常,但是上传到服务器以后,整合以前的老代码就出现此异常:loader constraint violation: when resolving interface method "org.w3c.dom.Node.setUserData(Ljava/lang/String;Ljava/lang/Object;Lorg/w3c/dom/UserDataHandler;)...

toutongbuxiang的博客 2084

局域网tcp通信实验

IPv4 地址 . . . . . . . . . . . . : 192.168.92.79。IPv4 地址 . . . . . . . . . . . . : 192.168.92.59。子网掩码 . . . . . . . . . . . . : 255.255.255.0。子网掩码 . . . . . . . . . . . . : 255.255.255.0。使用这篇文章的小工具。

weixin_51883798的博客 434

FPGA_adc采样并通过以太网发送到上位机

本项目使用FPGA-ZYNQ-7020采集8通道ADC数据,通过以太网上传到上位机显示波形PL部分包括数据的获取与处理,数据从PL传递到PSPS部分包括以太网的发送,由PL到PS的中断触发本文章不详细讲解背后原理 但保证每一步足够详细,跟着就能实现。本人FPGA平台 大磊FPGA7020开发板 vivado2020.2 vitis2020.2 匿名上位机公开版

weixin_42304868的博客 5626

Java之XML解析-使用dom(org.w3c.dom)解析XML

Java之XML解析-使用dom(org.w3c.dom)解析XML

qq_25073223的博客 2575

LS-DYNA中的流固耦合

在LS-DYNA中对流固耦合问题的求解提供了两种方法,ALE流固耦合和基于ICFD的流固耦合。本文将对两种方法的各自特点进行分析。 ALE方法的流固耦合 适用范围 ALE求解器主要用于层流。ALE求解器也不是完全的NS求解器,因此不考虑边界层的影响,比如阻力。流体粘性效应仅通过材料模型获得,也就是*mat_null的MU。ale求解器是为了求解高压高速度梯度的短时问题而开发的。该求解器并不适用于求解低压力梯度问题比如声学,也不适用于长时间问题(秒的尺度甚至更长)。时间的限制是显式时...

m0_69812055的博客 8557

Java程序员从笨鸟到菜鸟之(二十六)XML之DOM和SAX解析

DOM解析 在DOM接口规范中,有四个基本的接口:Document,Node,NodeList以及NamedNodeMap。在这四个基本接口中,Document接口是对文档进行操作的入口,它是从Node接口继承过来的。Node接口是其他大多数接口的父类,象Document,Element,Attribute,Text,Comment等接口都是从Node接口继承过来的。NodeList接口是...

long_yu2的专栏 278

COMSOL电弧放电仿真:四场耦合与磁流体建模实战指南

多物理场耦合仿真是现代工程中模拟复杂物理过程的重要手段。电弧本质上是电场、磁场、流场与温度场四场相互耦合的非线性系统,其行为由磁流体力学(MHD)方程描述。通过COMSOL等工具构建电弧模型,可准确预测温度分布、流场结构和电极烧蚀,为开关电器设计、等离子体应用等提供数据支撑。在高压电器开断、电弧切割、激光打孔等工程问题中,高效求解MHD耦合模型是关键。然而,电弧仿真涉及物性参数强非线性、边界条件设置、求解器配置以及移动网格处理等挑战。以二维轴对称电弧模型为例,系统梳理磁流体方程落地、多物理场耦合节点配置、收

weixin_30047059的博客 135

基于 FPGA 的 CNN 卷积神经网络之池化层 Verilog 实现

池化层是卷积神经网络(CNN)中的关键组件,用于降低特征图的维度,减少计算量和防止过拟合。常见的池化操作包括最大池化和平均池化。FPGA 提供了高效的并行处理能力,可以加速这些操作。池化层在 CNN 中扮演重要角色,通过降低数据维度提升计算效率。在 FPGA 上实现池化层,可以充分利用硬件资源实现高效的并行计算,有助于提高实时应用中的推理速度。

走向CTO的路上... 1256

JavaScript-⑦

DOM 基础知识 了解文档对象模型的概念 理解DOM的树形结构 DOM内部对象常用属性与方法 了解节点与元素的概念 使用DOM处理页面元素 1.节点之间关系 父节点:除文档节点之外的每个节点都有父节点。 和 的父节点是 节点 文本节点 "链接" 的父节点是 节点。 子节点: 节点有一个子节点: 节点。 &lt;title&gt; 节点也有一个子节点:文本节点 "标题"。 同辈(同级节...

宝拉天天想放假 594

华为od 面试八股文_数据库_01_含答案

华为od 面试八股文_数据库_01_含答案

MISAYAONE的博客 2168

DOM 解析操作知识

DOM 相关知识整理 1. DOM, 全名为 Document Object Model, 文档对象模型。基于 DOM 的 XML 分析器将一个 XML 文档转换成一个对象模型的集合,通常称为 DOM 树,应用程序正是通过对这个对象模型的操作,来实现对 XML 文档数据的操作。也成为随机访问机制。 2. DOM 分析器把整个 XML 文档转化成 DOM 树放在内存里,当文档较大...

KKKKKK1015的博客 194

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

DOM解析xml文件(org.w3c.dom、javax.xml.parsers包下的类和接口)

Java操作xml文件的方式 Java操作XML文件一共有四种方式: DOM SAX DOM4J JDOM 其中DOM和SAX是Java官方为我们提供的方法,不需要我们从外部导包,这里主要讲一下使用DOM解析xml文件。 DOM方式解析xml文件 使用DOM解析的原理是什么呢?DOM解析是将整个xml文档中的标签看作是一个一个的节点,通过获得节点来逐个对节点进行操作。在这里,我们需要使用Nod...

贪吃小明的博客 2792

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

DOM的四个基本接口

在DOM接口规范中,有四个基本的接口:Document,Node,NodeList以及NamedNodeMap。在这四个基本接口 中,Document接口是对文档进行操作的入口,它是从Node接口继承过来的。Node接口是其他大多数接口的父类,象 Documet,Element,Attribute,Text,Comment等接口都是从Node接口继承过来的。NodeList接口是一个节点...

dianzongfan5428的博客 510

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

DOM解析XML文件

DOM的全称是Document Object Model,也即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作。通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM 接口的机制也被称作随机访问机制。 对于XML应用开发来说, DOM就是一个对象化的XML数据接口,一个与语言无关、与平台无关的标准接口规范。它定义了HTLM文档和XML 文.

风继续吹 737

XML 相关总结[转载]

XML 相关总结 经过昨天的学习,了解到DOM只是提供了一种解析XML的方式(接口),而DOM的接口与语言无关。对DOM接口的实现有微软的MSXML,Xerces-C(Apache),Java的XML4J等。下面对DOM和MSXML的几个接口分别介绍(网上资料,经整理):一.DOM的四个基本接口在DOM接口规范中,有四个基本的接口:Document,Node,NodeList以及N

阿蒙的专栏 1333

DOM常用操作方法

什么是DOM? DOM全称是Document Object Model(文档对象模型),是为HTML和XML提供的API。那么为什么DOM可以同时提供给HTML和XML编程接口。虽然他们用来标记的标签不同,但是他们本质的结构是相同的。换句话说,按照DOM的标准,HTML和XML都是以标签为结点构造的树结构,DOM将HTML和XML的相同的结构本质抽象出来,然后通过脚本语言,如Javascript,按照DOM里的模型标准访问和操作文档内容。 DOM的四个基本接口 在DOM接口规范中,有四个基本的接口:Docu

qq_43036190的博客 710

XML解析之DOM

1.XML简介 可扩展的标记语言,提供了一套跨平台,跨网络, 跨程序的雨涵的数据描述方式。 使用XML可以方便的诗选数据交换,系统配置,内容管理等常见功能。 与HTML的区别在于,HTML主要针对web页面的显示,而XML注重于如何描述信息。 2.DOM(Document Object Model文档对象模型) 在应用程序中,DOM的xml解析器将一个XML文档转换成一个对象模型的集合(DO...

qq_40148447的博客 191

Dom解析XMl文档

在DOM接口规范中,有四个基本的接口:Document,Node,NodeList以及NamedNodeMap。在这四个基本接口中,Document接口是对文档进行操作的入口,它是从Node接口继承过来的。Node接口是其他大多数接口的父类,象Document,Element,Attribute,Text,Comment等接口都是从Node接口继承过来的。NodeList接口是一个节点的集合,它包

ling913的专栏 1308

MSXML使用教程

在DOM接口规范中,有四个基本的接口:Document,Node,NodeList以及NamedNodeMap。在这四个基本接口中,Document接口是对文档进行操作的入口,它是从Node接口继承过来的。Node接口是其他大多数接口的父类,象Documet,Element,Attribute,Text,Comment等接口都是从Node接口继承过来的。NodeList接口是一个节点的集合,它包含

千里之外 1万+

DOM学习

W3C制定了一套XML分析器的标准接口规范---DOM,除此之外,其他机构也制定了一套接口规范---SAX.   xml文档---&gt;xml分析器---&gt;接口(DOM或者SAX)---&gt;XML应用程序.   DOM 由三部分组成:核心(core),html和xml. 核心部分是结构化文档比较底层对象的集合,这一部分所定义的对象已经完全可以表达出任何 HTML和XML文档...

卡尔的面包 139

【XML】DOM解析XML

DOM解析XML 1. DOM(Document Object Model)       DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。 【优点】

无心博客 413
上一篇: HttpClient 教程 (一)
下一篇: CTS问题解决总结
jacklce
博客等级 码龄15年 18粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值