JavaScript--XML DOM 总结
XML DOM
2018-09-04
XML简介
1.什么是XML
XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准
2.XML用途
XML 把数据从 HTML 分离
XML 简化数据共享和传输
XML 简化平台的变更
XML 使您的数据更有用
3.XML 树结构
父节点 子节点 同辈节点 后代节点 先辈节点
1. 什么是节点
根据 DOM,XML 文档中的每个成分都是一个节点。
整个文档是一个文档节点
每个 XML 标签是一个元素节点
包含在 XML 元素中的文本是文本节点
每一个 XML 属性是一个属性节点
注释属于注释节点
2.节点类型
1.节点类型
| 节点类型 | 描述 | 子元素 |
|---|---|---|
| Document | 表示整个文档(DOM 树的根节点) | Element (max. one) ProcessingInstruction Comment DocumentType |
| DocumentFragment | 表示轻量级的 Document 对象,其中容纳了一部分文档。 | ProcessingInstruction Comment Text CDATASection EntityReference |
| DocumentType | 向为文档定义的实体提供接口。 | None |
| ProcessingInstruction | 表示处理指令。 | None |
| EntityReference | 表示实体引用元素。 | ProcessingInstruction Comment Text CDATASection EntityReference |
| Element | 表示 element(元素)元素 | Text Comment ProcessingInstruction CDATASection EntityReference |
| Attr | 表示属性。 | Text EntityReference |
| Text | 表示元素或属性中的文本内容。 | None |
| CDATASection | 表示文档中的 CDATA 区段(文本不会被解析器解析) | None |
| Comment | 表示注释。 | None |
| Entity | 表示实体。 | ProcessingInstruction Comment Text CDATASection EntityReference |
| Notation | 表示在 DTD 中声明的符号。 | None |
2.节点返回值
| 节点类型 | nodeName | nodeValue | NodeType | Named |
|---|---|---|---|---|
| Document | #document | null | 9 | DOCUMENT_NODE |
| DocumentFragment | #document fragment | null | 11 | DOCUMENT_F... |
| DocumentType | doctype 名称 | null | 10 | DOCUMENT_TYPE.. |
| EntityReference | 实体引用名称 | null | 5 | ENTITY_REFERENCE |
| Element | element name | null | 1 | ELEMENT_NODE |
| Attr | 属性名称 | 属性值 | 2 | ATTRIBUTE_NODE |
| ProcessingInstruction | target | 节点的内容 | 7 | PROCESSING_G... |
| Comment | #comment | 注释文本 | 8 | COMMENT_NODE |
| Text | #text | 节点内容 | 3 | TEXT_NODE |
3. 节点访问
1.得到节点
| 节点 | 访问 |
|---|---|
| document | document |
| element | getById/ByTagName/ByClassName.... |
| attr | element.getAttributeNode('attrname'); |
| text | 子节点 |
| comment | 子节点 |
2.获取节点
| 节点 | 功能 |
|---|---|
| childNodes | 获取子节点 |
| children | 获取子元素节点 |
| firstChild | 获取第一个子节点 |
| lastChild | 获取最后一个子节点 |
| parentNode | 获取父节点 |
| parentElement | 获取父元素节点 |
| previousSibling | 获取前一个节点 |
| nextSibling | 获取最后一个节点 |
3.节点属性
三个重要的 XML DOM 节点属性是:
nodeName
nodeValue
nodeType
| 节点 | nodeName | nodeValue | nodeType |
|---|---|---|---|
| document | #document | null | 9 |
| element | 标签名 | null | 1 |
| attr | 属性名称 | 属性值 | 2 |
| text | #text | 文本内容 | 3 |
| comment | #comment | 注释内容 | 8 |
4.节点操作
1.获取节点值
| 节点 | 方法 |
|---|---|
| element | 通过Id/tagName,通过子节点/父节点/同辈.. |
| attr | getAttributeNode('attrname'); 返回属性节点<br />getAttribute('attrname'); 返回属性节点值<br />element.attr HTML DOM |
2.改变节点值
| 节点 | 方法 |
|---|---|
| element | 无意义 |
| attr | setAttribute(attrname, attrvalue); 设置已有属性的值,或创建新属性<br />setAttributeNode(attrname)<br />element.attr = value; |
3.删除节点
| 节点 | 方法 |
|---|---|
| attr | 把值 赋值为null 或 removeAttribute('attrname'); |
| element | removeChild(node) 需要找到父节点 |
4.替换节点
| 节点 | 方法 |
|---|---|
| attr | setAttribute(attrname, attrvalue);<br />setAttribute('attrname'); 返回属性节点值<br />element.attr |
| element | replaceChild(new_node, old_node) 需要找到父节点 |
5.插入节点
| 节点 | 方法 |
|---|---|
| attr | setAttribute(attrname, attrvalue);<br />setAttribute('attrname'); 返回属性节点值<br />element.attr |
| element | appendChild(node) 追加插入<br />insertBefore(new_node, old_node) 指定位置插入 |
6.创建节点
| 节点 | 方法 |
|---|---|
| attr | document.createAttribute(attrname); |
| element | document.createElement('tagName'); |
7.克隆节点
| 节点 | 方法 |
|---|---|
| cloneNode(true) | 默认值false 表示值复制自己,true表示复制所有后代元素 |
5.XML对象
1.Document对象
Document 对象的属性
| 属性 | 描述 |
|---|---|
| childNodes | 返回属于文档的子节点的节点列表。 |
| doctype | 返回与文档相关的文档类型声明 (DTD)。 |
| documentElement | 返回文档的根节点 |
| firstChild | 返回文档的首个子节点 |
Document 对象的方法
| 方法 | 描述 |
|---|---|
| createAttribute(name) | 创建拥有指定名称的属性节点,并返回新的 Attr 对象。 |
| createElement() | 创建元素节点。 |
| createEvent() | 创建新的 Event 对象。 |
| renameNode() | 重命名元素或者属性节点。 |
2.Attr对象
Attr 对象的属性
| 属性 | 描述 |
|---|---|
| ownerDocument | 返回属性所属的根元素(document对象)。 |
| textContent | 设置或返回属性的文本内容。 |
| text | 返回属性的文本。IE-only |
| value | 设置或返回属性的值。 |
3.Element对象
Element 对象的属性
| 属性 | 描述 |
|---|---|
| attributes | 返回元素的属性的 NamedNodeMap |
| childNodes | 返回元素的子节点的 NodeList |
| firstChild | 返回元素的首个子节点 |
| lastChild | 返回元素的最后一个子节点 |
| localName | 返回元素名称的本地部分 |
| nextSibling | 返回元素之后紧跟的节点 |
| previousSibling | 返回元素之前紧随的节点 |
| parentNode | 返回元素的父节点 |
Element 对象的方法
| 方法 | 描述 |
|---|---|
| appendChild() | 向节点的子节点列表末尾添加新的子节点。 |
| cloneNode() | 克隆节点。 |
| compareDocumentPosition() | 比较两节点的文档位置。 |
| dispatchEvent() | 给节点分派一个合成事件。 |
| getAttribute() | 返回属性的值。 |
| getAttributeNode() | 以 Attribute 对象返回属性节点。 |
| getElementsByTagName() | 找到具有指定标签名的子孙元素。 |
| hasAttribute() | 返回元素是否拥有指定的属性。 |
| hasAttributes() | 返回元素是否拥有属性。 |
| hasChildNodes() | 返回元素是否拥有子节点。 |
| insertBefore() | 在已有的子节点之前插入一个新的子节点。 |
| removeAttribute() | 删除指定的属性。 |
| removeAttributeNode() | 删除指定的属性节点。 |
| removeChild() | 删除子节点。 |
| replaceChild() | 替换子节点。 |
| setAttribute() | 添加新属性。 |
| setAttributeNode() | 添加新的属性节点。 |
4.HTMLElement

HTMLElement 对象的属性
| 属性 | 描述 |
|---|---|
| className | 规定元素的 class 属性。 <br />类型:String。<br />状态:可写。 |
| innerHTML | innerHTML 属性返回与调用元素的所有子节点(包括元素、注释和文本节点)对应的 HTML 标记。 <br />类型:String。<br />状态:可写。 |
| innerText | 只获取文本内容 |
| outerHTML | 返回调用它的元素及所有子节点的 HTML 标签。 |
| innerHeight,innerWidth | 浏览器窗口的内部高度 ,宽度<br />( 获取去除工具条与滚动条的窗口高度与宽度。 ) |
| outerHeight , outerWidth | 设置或返回一个窗口的外部高度,包括所有界面元素(如工具栏/滚动条)。 |
| innerText | 通过 innerText 属性可以操作元素中包含的所有文本内容,包括子文档树中的文本。 |
| offsetHeight,offsetWidth | 返回元素的高度和宽度,以像素为单位。 <br /> offsetHeight=clientHeight+滚动条+边框.(整个网页来说) <br />offsetWidth=元素的width+padding+border <br />类型:int。<br />状态:只读。 |
| offsetLeft | 返回当前元素的左边界到它的包含元素的左边界的偏移量,以像素为单位。<br /> 类型:int。<br />状态:只读。 |
| offsetTop | 返回当前元素的上边界到它的包含元素的上边界的偏移量,以像素为单位。 <br />类型:int。<br />状态:只读。 |
| scrollTop,scrollLeft | 设置或返回已经滚动到元素的左边界或上边界的像素数。<br />类型:int。<br />状态:可写。 |
| scrollHeight,scrollWidth | 返回元素的完整的高度和宽度,以像素为单位。<br />类型:int。<br />状态:只读。 |
| clientWidth,clientHeight | 可见内容的宽度和高度,元素的宽,高加内边距 |
| offsetParent | 返回对最近的动态定位的包含元素的引用,所有的偏移量都根据该元素来决定。如果元素的 style.display 设置为 none,则该属性返回 null。<br /> 类型:Node。<br />状态:只读。 |
对象方法
| 方法 | 描述 |
|---|---|
| scrollIntoView() | 滚动文档。使该元素出现在窗口的顶部或底部。 |
5.Text对象
Text 对象属性
| 属性 | 描述 |
|---|---|
| data | 设置或返回元素或属性的文本 |
| isElementContentWhitespace | 判断文本节点是否包含空白字符内容。 |
| length | 返回元素或属性的文本长度 |
| wholeText | 以文档中的顺序向此节点返回相邻文本节点的所有文本 |
Text 对象方法
| 方法 | 描述 |
|---|---|
| appendData() | 向节点追加数据 |
| deleteData() | 从节点删除数据 |
| insertData() | 向节点中插入数据 |
| replaceData() | 替换节点中的数据 |
| replaceWholeText() | 使用指定文本来替换此节点以及所有相邻的文本节点 |
| splitText() | 把一个 Text 节点分割成两个。 |
| substringData() | 从节点提取数据 |
6.Comment对象
Comment 对象属性
| 属性 | 描述 |
|---|---|
| data | 可设置或返回此节点的文本。 |
| length | 可返回此节点的文本的长度 |
Commentt 对象方法
| 方法 | 描述 |
|---|---|
| appendData() | 向节点追加数据 |
| deleteData() | 从节点删除数据 |
| insertData() | 向节点中插入数据 |
| replaceData() | 替换节点中的数据 |
| substringData() | 从节点提取数据 |
视口高度
document.documentElement.clientHeight
文档高度
document.documentElement.scrollHeight
Mozilla 开发者社区(MDN):https://developer.mozilla.org/zh-CN/JavaScript MDN文档https://developer.mozilla.org/zh-CN/docs/Web/JavaScript
JavaScript--XML DOM 总结的更多相关文章
- JavaScript 【 IE中的XML DOM 】
IE中的 XML DOM 在统一的正式规范出来以前,浏览器对于XML的解决方案各不相同.DOM2级提出了动态创建XML DOM规范,DOM3进一步增强了XML DOM.所以,在不同的浏览器实现XML的 ...
- Javascript 解析字符串生成 XML DOM 对象。
Javascript 接收字符串生成 XML DOM 对象.实测对 Firefox .IE6 有效.可用于解析 ajax 的服务器响应结果,也可用于解析自定义字符串.1. [代码]函数 ppt模 ...
- JavaScript和DOM的产生与发展
首先本篇文章摘自:http://itbilu.com/javascript/js/Vyxodm_1g.html 非常感谢本篇文章的作者,他理清了我映像中混乱的DOM Level级别.让我知道了DOM0 ...
- javascript与DOM的渊源
1. JavaScript的起源 1.1 JavaScript的诞生与发展 JavaScript最初由Netscape的Brendan Eich设计, Netscape在最初将其脚本语言命名为Live ...
- JavaScript XML 兼容处理,序列化和反序列化以及回调事件
浏览器中XML DOM的支持 IE中通过ActiveXObject实现了XML的支持,存在一下几个版本:Microsoft.XmlDom,MSXML2.DOMDocument,MSXML2.DOMDo ...
- 自学XML DOM的几个例子
XML DOM定义了如何获取.修改.添加和删除XML文件中结点的接口,极大方便了开发者对XML文件的使用.XML DOM教程和手册请转:http://www.w3school.com.cn/xmldo ...
- JavaScript & XML
原文:JavaScript & XML 检测浏览器能力特性 //检测浏览器是否支持DOM2级XML var hasXmlDom = document.implementation.hasFea ...
- 第一百一十六节,JavaScript,DOM操作样式
JavaScript,DOM操作样式 一.操作样式 CSS作为(X)HTML的辅助,可以增强页面的显示效果.但不是每个浏览器都能支持最新的CSS能力.CSS的能力和DOM级别密切相关,所以我们有必要检 ...
- Python javascript操作DOM
文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把 ...
- Javascript的DOM总结
Javascript的DOM总结 DOM DOM 是 W3C(万维网联盟)的标准.DOM 定义了访问 HTML 和 XML 文档的标准: "W3C 文档对象模型(DOM)是中立于平台和语言的 ...
随机推荐
- eclipse的快捷键【转载】
原文地址http://www.open-open.com/bbs/view/1320934157953/ Eclipse中10个最有用的快捷键组合 一个Eclipse骨灰级开发者总结了他认为最有用但 ...
- Luogu4886 快递员 点分治
传送门 淀粉质好题啊qaq 我们先考虑随便选择一个点作为邮递中心,通过移动邮递中心找到更优的位置.将路径最大值求出,并将路径最大值对应的那一些路径拿出来考虑.可以知道,如果说这些路径中存在一条经过当前 ...
- HDU 3400
一道很适合练习三分的题目三分套三分强不强 题意:给你平面上两条平行线段\(AB\)和\(CD\),一个人要从\(A\)走到\(D\),他在线段\(AB\)上的速度为\(P\),在\(CD\)上的速度为 ...
- FSMC的个人理解
个人理解: FSMC相当于外部设备存储器地址在FSMC对应存储地址中的映射,通过在FSMC的存储地址中写数据,就能通过FSMC的地址线和数据线,将地址和数据写到外部设备存储器地址中.所以,程序中,需要 ...
- P3830 [SHOI2012]随机树
P3830 [SHOI2012]随机树 链接 分析: 第一问:f[i]表示有i个叶子结点的时候的平均深度,$f[i] = \frac{f[i - 1] + 2 + f[i - 1] * (i - 1) ...
- Verilog设计异步FIFO
转自http://ninghechuan.com 异步FIFO有两个异步时钟,一个端口写入数据,一个端口读出数据.通常被用于数据的跨时钟域的传输. 同步FIFO的设计.一个时钟控制一个计数器,计数器增 ...
- TRIO-basic指令--MOVEMODIFY
Syntax: MOVEMODIFY(position) Parameters: position: Absolute position for the current move to complet ...
- ssh实现办公室电脑连接家中的电脑
友情提示:如果您不知道您家路由器管理页面的密码,请您忽略此文. 问题背景: 家中有台笔记本电脑,它是通过家中的路由器与外界联网的,这时,我想通过ssh服务让公司的电脑能连上我家中的笔记本. 可以画个图 ...
- 个人博客作业Week2(代码规范,代码复审)
Q:是否需要有代码规范 首先我们来搞清楚什么是“代码规范”,它和“代码风格”又有什么关系.依据个人的审美角度,我可能更喜欢在函数与函数之间空出一行,可能在命名习惯和代码注释上更加的internatio ...
- 《Linux内核设计与实现》读书笔记六
第4章 进程调度35 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有通过调度程序的合理调度,系统资源才能最 ...