理解 XMLDOM 的节选(2)
发布时间:2008-02-17 14:48:00
元素和节点的区别
事实上,元素只是节点的一种类型,它们甚至不表示上图似乎要揭示的内容。 元素节点是信息的容器。该信息可能是其他元素节点、文本节点、属性节点或其他类型的信息。对该文档的更精确描绘如下:
矩形框表示元素节点,椭圆表示文本节点。 当一个节点包含在另一个节点之内时,它就被认为是后一个节点的孩子。
注意 orders 元素节点不是只有两个子节点,而是有五个子节点:两个 order 元素,以及它们之间后周围的文本节点。即使没有内容,order 元素之间的空白也会构成一个文本节点。类似地, item 具有七个子节点:name、price、qty,以及它们周围的四个文本节点。
(编者注:你可能会有疑问:在IE中编程时,如docmentElement.childNodes(0)却为第一个order 子元素节点,而不是相应的上面提到的空白文本节点;同样docmentElement.childNodes(1)却为第二个order 子元素节点。怎么会这样呢?这是因为IE所含的XML解析器为MSXML版本,它解析时忽略上面提到的空白文本节点;而在java中你就可以验证确实包含空白文本节点;在.NET中你设置xml文档的PreserveWhitespace属性为true,则包含空白文本节点,否则忽略。由此可见,不同的API实现DOM接口的方法不同。)还要注意,可能被认为是某个元素的内容的东西,比如“Premium Cinch”,实际上却是作为 name元素的子节点的文本节点的内容。(虽然本图并不完整,漏掉了属性节点以及其他内容。)
基本的节点类型
最常见的节点类型包括:
元素:元素是 XML 的基本构造模块。通常,元素拥有子元素、文本节点,或两者的组合。元素节点也是能够拥有属性的唯一节点类型。
属性:属性节点包含关于元素节点的信息,但是并不实际认为是元素的孩子,比如在下面的例子中:
<customerid limit="1000">12341</customerid>
文本:文本节点就是名副其实的文本。它可以由更多信息组成,也可以只包含空白。
文档:文档节点是文档中其他所有节点的父亲。
不太常见的节点类型:CDATA、注释、处理指令,以及文档片断
其他节点类型不太常用,但是在某些场合下仍然是必需的。
它们包括:
CDATA:字符数据(Character Data)的缩写,这是一个特殊的节点,它包含不应该被解析器分析的信息。相反,它包含的信息应该以纯文本传递。例如,可能会为了特殊目的而存储 HTML 标签。在通常情形下,处理器可能尝试为所存储的每个标签创建元素,而这样可能导致文档不是格式良好的。这些问题可用通过使用 CDATA 节(section)来避免。
注释:注释包括关于数据的信息,通常被应用程序忽略。
处理指令:处理指令是专门针对应用程序的信息。其中一些例子包括要执行的代码或者关于从何处寻找样式表的信息。
文档片断:要使文档成为格式良好的,它必须仅有一个根元素。有时在使用 XML 的时候,必须临时创建多组元素,这些元素不一定满足这个要求。文档片断看起来类似如下:
<item instock="Y" itemid="SA15">
<name>Silver Show Saddle, 16 inch</name>
<price>825.00</price>
<qty>1</qty>
</item>
<item instock="N" itemid="C49">
<name>Premium Cinch</name>
<price>49.00</price>
<qty>1</qty>
</item>
其他类型的节点包括实体、实体引用节点,以及注解。
文章推荐:苏沈小雨htmlDOM方法中文手册chm


猜你喜欢
- 本文所述实例为Python处理文本文件并生成指定格式文件的方法,具体实现功能代码如下所示:import osimport sysimport
- MySQL replace函数我们经常用到,下面就为您详细介绍MySQL replace函数的用法,希望对您学习MySQL replace函
- 本文实例讲述了python对象转字典的两种实现方式。分享给大家供大家参考,具体如下:一. 方便但不完美的__dict__对象转字典用到的方法
- 前置准备一个域名一台服务器一个公众号域名配置在你的域名服务商新建二级域名并绑定服务器主机IP服务器配置上传下面的python文件到你的服务器
- OpenAI 是一个人工智能的工具包,包括神经网络、遗传算法和有限状态机等。使用python可以非常便捷的操作OpenAI的API。一下是O
- 今天发现个好东西啊,叫片刻抠图,是一个在线对图片自动抠图去除背景的网站。只要上传图片,就可以自动把背景去掉把目标对象抠出来。不管是动物、汽车
- 在前面的<如何使用PHP计算上一个月的今天>一文中, 我们提到strtotime函数在使用strtotime(”-1 month
- asp使用WScript.Shell获取电脑的网络配置信息Option Explicit Dim WSHShe
- 本文是Python通过TensorFlow卷积神经网络实现猫狗识别的姊妹篇,是加载上一篇训练好的模型,进行猫狗识别本文逻辑:我从网上下载了十
- 1.1.1 摘要 Join是关系型数据库系统的重要操作之一,SQL Server中包含的常用Join:内联接、外联接和交叉联接等。如果我们想
- 一、乱码问题描述经常在爬虫或者一些操作的时候,经常会出现中文乱码等问题,如下原因是源网页编码和爬取下来后的编码格式不一致 二、利用
- 使用到的函数是curl_init, curl_setopt, curl_exec,curl_close。默认是GET方法,可以选择是否使用H
- 调用的api接口:https://api.exchangerate-api.com/v4/latest/USD完整代码import requ
- 本文实例讲述了Python简单格式化时间的方法,分享给大家供大家参考,具体如下:walker经常用到当前时间和相对时间,用来统计程序执行的效
- slice 可以用来获取数组片段,它返回新数组,不会修改原数组。除了正常用法,slice 经常用来将 array-like 对象转换为 tr
- 本文实例讲述了gearman+mysql方式实现持久化操作。分享给大家供大家参考,具体如下:1、为什么要持久化?gearman的job se
- Beautiful Soup就是Python的一个HTML或XML的解析库,可以用它来方便地从网页中提取数据。它有如下三个特点:Beauti
- 问题微信公众号获取code时的跳转链接,默认是获取当前页面的链接,代码如下:// 说明:获取当前页面的url地址function GetCu
- FFmpeg 是视频处理最常用的开源软件。它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许
- 基于requests模块发起ajax的get请求需求:爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情