java中的dom是什么?网页技术中dom是什么
各位老铁们好,相信很多人对java中的dom是什么都不是特别的了解,因此呢,今天就来为大家分享下关于java中的dom是什么以及网页技术中dom是什么的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
程序员总说的DOM到底是什么
大家好,有些词儿,程序员之间虽然天天说,彼此之间心照不宣,但是在面对一些非技术的产品同学的时候,对方却不一定能一下子就get到点。这个系列的文章就是为了解决这种尴尬的,理想的效果是,只要一提起这些词儿,你脑海中就会出现一幅图或者一段精妙的解释,那我们就成功了。
今天Java培训班讲解的词儿是DOM,是程序员里面最基础、最常用的一个东西。它的全称是文档对象模型(DocumentObjectModel),光看名字太抽象,简单解释一下。我们知道,一个网页,其实就是一个html文件,经过浏览器的解析,最终呈现在用户面前。html语言我们也讲过,是由很多标签组成的,像这样:
里面的head、body就是标签。这些标签不是随意摆放的,他们有自己的规则。首先它们是嵌套的,一层套一层,比如html套body,body又套p标签。其次,每一层,可以同时存在很多标签,比如head和body就是一层的,他们被外面的html套着。这样的结构很像我们电脑里的文件夹,「我的电脑」是最外面的一层,里面套着CDEF盘,每个盘里又有很多文件夹,文件夹里又有文件夹,最后才是很多具体的文件。
为什么要按照这种结构来组织呢?其实就是方便解析和查询。解析的时候,从外到里,循序渐进,好比按照图纸盖房子,先盖围墙,再盖走廊,最后才是卧室。查询的时候,会有一条明确的路线,比如D盘-->岛国文化交流-->影视作品-->苍老师.avi,这样一层一层的缩小范围,查找效率会非常高。
所以,浏览器在解析html文档的时候,会把每个标签抽象成代码里的对象,然后按照这种层次分明的结构组织起来,这就是文档对象模型,DOM了。画个图表示一下就是这样的:
这就是数据结构里典型的「树」了。所以大家经常说DOM树,其实是一个意思。浏览器在解析html的时候,会在它的内部构建这样一棵DOM树,然后按照这棵树上的层次顺序,依次来解析每个标签。标签解析完了,用户就看到了网页的内容。
但是,事情到这里还远远没有结束,因为还有javascript。浏览器解析完了html,然后就要开始解析html里的javascript代码了。我们知道,程序员可以通过javascript代码来实现一些动态的网页效果,比如去服务器拉取一段数据来展示,再比如说做一个酷炫的动画效果,这些,都还要用到DOM。
举个简单的例子,现在javascript想要在网页里显示一行字“thisisfromjavascript”。要做的第一步,就是找到那个可以显示文字的标签。这是非常容易的,因为浏览器已经把DOM都交给javascript了。DOM里的对象,正好就是javascript语言里的对象。于是,通过下面的方法,javascript可以修改DOM树上的标签对象。
随着前端知识的深入,你会发现javascript操纵DOM是非常普遍事情。比如很多网页,一开始加载出来只是个架子,只有一个loading在转圈,只有等javascript从服务器上请求到真正的数据之后,操纵DOM来显示数据,才能看到内容,这就是典型的异步加载。再比如html5的游戏,里面的人物要随着手势或鼠标来运动,多半也是javascript操纵DOM改变元素的位置来实现的。可以说,有了DOM,才使得javascript在前端世界里几乎无所不能。
但是,有一点要注意,就是操纵DOM本身是一件效率非常低的事情。因为一个网页往往是很复杂的,浏览器构造出来的DOM树往往也是很庞大的,有的甚至有几千个节点。在这样庞大的一棵树上,进行频繁的改动,对浏览器尤其是移动浏览器来说是一个不小的工作量,稍一不注意就卡了。
有人就发明了一种便捷的方法,叫虚拟DOM。简单来说就是用javascript又模拟了一棵简单的DOM树,然后所有的DOM操作都在这上面演练,这个效率是很高的。等时机成熟的时候,再把虚拟DOM树和真正的浏览器的DOM树做对比,算出差异,一次性的去改变真正的DOM树,这个效率也很高。经过这两个步骤,从整体上大大提高了javascript操纵DOM树的效率。
北大青鸟java培训:什么是DOM
DOM(DocumentObjectModel)即文档对象模型,针对HTML和XML文档的API(应用程序接口)。
DOM描绘了一个层次化的节点树,运行开发人员添加、移除和修改页面的某一部分。
DOM脱胎于Netscape及微软公司创始的DHTML(动态HTML),但现在它已经成为表现和操作页面标记的真正跨平台、语言中立的方式。
1.节点加载HTML页面时,Web浏览器生成一个树型结构,用来表示页面内部结构。
DOM将这种树型结构理解为由节点组成。
我们理解几个概念,html标签没有父辈,没有兄弟,所以html标签为根标签。
head标签是html子标签,meta和title标签之间是兄弟关系。
宁夏电脑培训http://www.kmbdqn.cn/认为如果把每个标签当作一个节点的话,那么这些节点组合成了一棵节点树。
2.节点种类:元素节点、文本节点、属性节点。
网页技术中dom是什么
1.文档对象模型(DOM)
DOM是HTML和XML文档的编程基础,它定义了处理执行文档的途径。编程者可以使用DOM增加文档、定位文档结构、填加修改删除文档元素。W3C的重要目标是把利用DOM提供一个使用于多个平台的编程接口。W3C
DOM被设计成适合多个平台,可使用任意编程语言实现的方法。
2.节点接口
XML
parser用来装载XML文档到缓存中,文档装载时,可以使用DOM进行检索和处理。DOM采用树形结构表示
XML文档,文档元素是树的最高阶层,该元素有一个或多个孩子节点用来表示树的分枝。
节点接口程序通常用来读和写XML节点树中的个别元素,文档元素的孩子节点属性可以用来构造个别元素节点。XML
parser用来证明Web中的DOM支持遍历节点树的所有函数,并可通过它们访问节点和及其属性、插入删除节点、转换节点树到XML中。
所有Microsoft
XML
parser函数得到W3C
XML
DOM的正式推荐,除了load和loadXML函数(正式的DOM不包括标准函数loading
XML文档)。有13个节点类型被Microsoft
XML
parser支持,下面列出常用节点:
节点类型
例子
Document
type
<!DOCTYPE
food
SYSTEM
"food.dtd">
Processing
instruction
<?xml
version="1.0"?>
Element
<drink
type="beer">Carlsberg</drink>
Attribute
type="beer"
Text
Carlsberg
3.使用XML
parser
为了更加熟练的处理XML文档,必须使用XML
parser。Microsoft
XML
parser是IIS5.0所带的一个COM组件,一旦安装了IIS5.0,parser可以利用HTML文档和ASP文件中的脚本。
Microsoft
XMLDOM
parser支持以下编程模式:
----支持
JavaScript,
VBScript,
Perl,
VB,
Java,
C++
等等
----支持
W3C
XML
1.0
和
XML
DOM
----支持
DTD
和
validation
如果使用IE5.0中的JavaScript,可以使用下面的XML文档对象:
var
xmlDoc
=
new
ActiveXObject("Microsoft.XMLDOM")
如果使用VBScript,可以使用下面的XML文档对象:
set
xmlDoc
=
CreateObject("Microsoft.XMLDOM")
如果使用ASP,可以使用下面的XML文档对象:
set
xmlDoc
=
Server.CreateObject("Microsoft.XMLDOM")
4.装载一个XML文件到parser中
下面的代码装载存在的XML文档进入XML
parser:
<script
language="JavaScript">
var
xmlDoc
=
new
ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
//
.......
processing
the
document
goes
here
</script>
第一行脚本增加了一个Microsoft
XML
parser实例,第三行装载名为”note.xml”的XML文档进入parser中。第二行保证文档装载完成以后parser进行下一步工作。
5.
parseError对象
打开XMl文档时,XML
Parser产生错误代码,并存在parseError对象中,包括错误代码、错误文本和错误行号,等信息。
6.文件错误
下面的例子将试图装载一个不存在的文件,然后产生相应的错误代码:
var
xmlDoc
=
new
ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("ksdjf.xml")
document.write("<br>Error
Code:
")
document.write(xmlDoc.parseError.errorCode)
document.write("<br>Error
Reason:
")
document.write(xmlDoc.parseError.reason)
document.write("<br>Error
Line:
")
document.write(xmlDoc.parseError.line)
7.XML错误
下面使用不正确的格式装载XMl文档,
var
xmlDoc
=
new
ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note_error.xml")
document.write("<br>Error
Code:
")
document.write(xmlDoc.parseError.errorCode)
document.write("<br>Error
Reason:
")
document.write(xmlDoc.parseError.reason)
document.write("<br>Error
Line:
")
document.write(xmlDoc.parseError.line)
8.
parseError属性
属性
errorCode
返回长整型错误代码
reason
返回字符串型错误原因
line
返回长整型错误行号
linePos
返回长整型错误行号位置
srcText
返回字符串型产生错误原因
url
返回url装载文档指针
filePos
返回长整型错误文件位置
9.遍历节点树
一种通用的析取XML文档的方法是遍历节点树和它的元素值。下面是使用VBScript写的遍历节点树的程序代码:
set
xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
for
each
x
in
xmlDoc.documentElement.childNodes
document.write(x.nodename)
document.write(":
")
document.write(x.text)
next
10.为XML文件提供HTML格式
XML的一个优点是把HTML文档和它的数据分离开。通过使用浏览器中的XML
parser,HTML页面可以被构造成静态文档,通过JavaScript提供动态数据。下面的例子使用JavaScript读取XML文档,写XML数据成HTML元素:
var
xmlDoc
=
new
ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
nodes
=
xmlDoc.documentElement.childNodes
to.innerText
=
nodes.item(0).text
from
.innerText
=
nodes.item(1).text
header.innerText
=
nodes.item(2).text
body.innerText
=
nodes.item(3).text
11.通过名称访问XML元素
下面的例子使用JavaScript读取XML文档,写XML数据成HTML元素:
var
xmlDoc
=
new
ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
document.write(xmlDoc.getElementsByTagName("from").item(0).text)
12.装载纯XML文本进入parser
下面的代码装载文本字符串进入XML
parser
:
<script
language="JavaScript">
var
text="<note>"
text=text+"<to>Tove</to><from>Jani</from>"
text=text+"<heading>Reminder</heading>"
text=text+"<body>Don't
forget
me
this
weekend!</body>"
text=text+"</note>"
var
xmlDoc
=
new
ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.loadXML(text)
//
.......
processing
the
document
goes
here
</script>
13.装载XML进入Parser
<html>
<body>
<script
language="javascript">
var
xmlDoc
=
new
ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
document.write("The
first
XML
element
in
the
file
contains:
")
document.write(xmlDoc.documentElement.childNodes.item(0).text)
</script>
</body>
</html>
遍历XML节点树:
<html>
<body>
<script
language="VBScript">
txt="<h1>Traversing
the
node
tree</h1>"
document.write(txt)
set
xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
for
each
x
in
xmlDoc.documentElement.childNodes
document.write("<b>"
&
x.nodename
&
"</b>")
document.write(":
")
document.write(x.text)
document.write("<br>")
next
</script>
</body>
</html>
装载XML
进入
HTML
<html>
<head>
<script
language="JavaScript"
for="window"
event="onload">
var
xmlDoc
=
new
ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
nodes
=
xmlDoc.documentElement.childNodes
to.innerText
=
nodes.item(0).text
from.innerText
=
nodes.item(1).text
header.innerText
=
nodes.item(2).text
body.innerText
=
nodes.item(3).text
</script>
<title>HTML
using
XML
data</title>
</head>
<body
bgcolor="yellow">
<h1>Refsnes
Data
Internal
Note</h1>
<b>To:
</b><span
id="to"></span>
<br>
<b>From:
</b><span
id="from"></span>
<hr>
<b><span
id="header"></span></b>
<hr>
<span
id="body"></span>
</body>
</html>
文章到此结束,如果本次分享的java中的dom是什么和网页技术中dom是什么的问题解决了您的问题,那么我们由衷的感到高兴!