zoukankan      html  css  js  c++  java
  • XML DOM

    XML DOM 教程
    XML文档对象模型定义访问和操作XML文档的标准方法。
    DOM将 XML文档 作为一个树形结构,而树叶被定义为节点。
    XML DOM 简介
    XML DOM 定义了 访问和处理 XML文档的标准方法。
    XML DOM 是XML Docment Object Model(文档对象模型) 的缩写。
    什么是DOM?
    DOM是W3C(万维网联盟)的推荐标准。
    DOM定义了 访问 诸如XML和XHTML文档的 标准。
    “W3C文档对象模型(DOM)是一个 使 程序和脚本 有能力 动态地 访问和更新 文档的内容。”
    W3C DOM 被分为3个;不同的部分/级别(parts/levels):
    核心 DOM :用于 任何 结构化文档的__标准模型。
    XML OOM : 用于 ________XML文档的__标准模型。
    HTML DOM :用于 _______HTML文档的__标准模型。

    DOM 定义了 所有文档元素的对象和属性,以及访问他们的方法(接口)

    什么是HTML DOM?
    HTML DOM 定义了 所有HTML元素的对象和属性,以及访问他们的方法(接口);
    什么是XML DOM?
    XML DOM是:
    ·用于XML的标准对象模型
    ·用于XML的标准编程接口
    ·中立于平台和语言
    ·W3C的标准
    XML DOM定义了所有XML元素的对象和属性,以及访问塔门的方法(接口)
    XML DOM是用于获取、更改、添加或删除XML元素的标准。

    XML DOM 节点
    XML DOM 节点
    XML 文档中的 每个成分 都是一个节点。
    DOM是这样规定的:
    ·整一个文档___________是一个______文档节点。
    ·每一个XML标签________是一个______元素节点。
    ·包含在XML元素中的文本是__________文本节点。
    ·每一个XML属性________是一个______属性节点。
    ·注释属于_________________________注释节点。
    DOM 实例
    在上面的XML中,根节点<bookstore>.文档的所有其他节点都被包含在<bookstore>中。
    根节点<bookstore>有四个<book>节点。
    第一个<book>节点有四个节点:<title>,<author>,<year>以及<price>,其中每个节点都包含一个文本节点。
    文本总是储存在文本节点中。
    在DOM处理中一个普遍的错误是,认为元素节点包含文本。
    元素节点的文本是储存在文本节点中的。
    例:<year>2005</year>,元素节点<year>,拥有一个值为“2005”的文本节点。“2005”不是<year>元素的值!

    XML DOM 结点树
    XML DOM 把 XML DOM文档 视为一颗节点树(node-tree)。
    树中所有节点彼此之间都有关系。
    XML DOM 结点树
    XML DOM 把 XML文档 视为一种结构树。这种树结构被称为 节点树。
    可通过这棵 树访问所有节点。可以修改或删除他们的内容,也可以创建新的元素。
    这颗节点树展示了节点的集合,以及他们之间的联系。
    这棵树从根节点开始,然后在__树的最底层级__向__文本节点__长出枝条。·

    父、子和同级节点
    节点树中的节点彼此之间都有等级关系。
    父、子和同级节点用于描述这种关系。
    父节点拥有子节点,位于相同层级上的子节点成为同级节点(兄弟或姐妹)。
    ·在节点树中,顶端的节点称为根节点。
    ·根节点之外的每个节点都是一个父节点。
    ·节点可以有任何数量的子节点。
    ·叶子是没有子节点的节点。
    ·同级节点是拥有相同父节点的节点。
    因为XML数据是按照树的形式进行构造的,所以可以在不了解树的确切结构且不了解其中包含的数据类型的情况下,对其进行遍历。
    parent Node 父节点
    children Node 子节点
    sibling Node 同级节点

    解析 XML DOM
    浏览器__内建了__读取和操作XML的__XML解析器。
    浏览器的_________________________XML解析器__把__XML__转换为__Javascript可存取的对象。

    解析XML
    所有现代浏览器都内建了用于读取和操作XML的XML解析器。
    浏览器的XML解析器 把XML读入内存,并把它转换为可被Javascript访问的XML DOM对象。
    微软IE的XML解析器与其他浏览器中的解析器是有差异的。
    微软IE的XML解析器__支持对XML文件和XML字符串(文本)的加载,而其他浏览器使用单独的XML解析器。
    所有的__XML解析器__都含有遍历XML树、访问、插入及删除节点的函数。

    通过微软IE的XML解析器加载XML

    编程接口
    DOM把XML模拟为一系列节点接口。可通过Javascript或其他编程语言来访问节点。
    对 DOM的编程接口 是通过一套标准的属性和方法来定义的。
    属性经常按照“某事物是什么”的方式来使用(例如节点名是“book”)。
    方法经常按照“某事物做什么”的方式来使用(例如删除“book”节点)。

    XML DOM 属性
    一些典型的DOM属性:
    x.nodeName 获取x的名称
    x.nodeValue 获取x的值
    x.parentNodes 获取x的父节点
    x.childNodes 获取x的子节点
    x.attributes 获取x的属性节点
    注释:在上面的列表中,x是一个节点对象。

    XML DOM 方法
    x.getElementsByTagName(name) 获取带有指定节点名称的所有元素
    x.appendChild(node) 向x插入子节点
    x.removeChild(node) 向x删除子节点
    注释:在上面的列表中,x是一个节点对象。

    实例:
    从____books.xml中的<title>元素____获取文本_____的JavaScript代码:
    text = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
    解释:
    xmlDoc 有浏览器的XML解析器创建的XML DOM
    getElementsByTagName("title")[0] 第一个title元素节点
    childNode[0] <title>元素节点的第一个子节点(文本节点)
    nodeValue 文本节点的值(文本自身)

    在上面的例子中,getElementsByTagName是方法,而childNodes和nodeValue是属性。
    为每个文本节点使用childNodes[0],即使每个元素只有一个文本节点。这是由于getElementByTagName()方法总是会返回数组。

    XML DOM访问节点
    通过DOM,您能够访问XML文档中的每个节点。
    loadXMLDoc(),用于外部判断浏览器,在JavaScript中加载XML文件。
    使用节点列表中的下标符号来访问节点
    使用length属性来循环"books.xml"中的所有<title>元素节点。
    查看元素的节点类型
    nodeType属性 nodeName属性
    使用___节点的关系___循环元素节点

    访问节点
    可以通过三种方式来访问节点:
    1.通用使用getElementsByTagName()方法;
    2.通过循环(遍历)结点树;
    3.通过利用节点的关系在节点树中导航。

    getElelmentsTagName()方法
    getElementByTagName()返回拥有指定标签名的多有元素。
    语法:node.getElementsByTagName("tagname");
    实例:
    下面的例子返回x元素下的所有<title>元素:
    x.getElementByTagName("title");
    注意:上面的例子返回x元素下的所有<title>元素;如果返回XML文档中的所有<title>元素,使用:
    xmlDoc.getElementsByTagName("title");
    在这里,xmlDoc 就是文档本身(文档节点);

    XML文档的documentElement属性是根节点。
    节点的nodeName属性是节点的名称;
    节点的nodeType属性是节点的类型;

    节点的属性
    在XML文档对象模型(DOM)中,每个节点都是一个对象,并可通过Javascript进行访问和操作
    三个重要的节点属性是:
    .nodeName
    .nodeValue
    .nodeType

    nodeName属性
    nodeName属性规定节点的名称
    nodeName是只读的
    XMLDOM元素节点的nodeName与__HTML标签名__相同
    属性节点的nodeName是属性的名称
    文本节点的nodeName永远是#text
    文档节点的nodeName永远是#document

    nodeValue属性
    nodeValue属性规定节点的值。
    元素节点的nodeValue是undefined
    文本节点的nodeValue是文本自身
    属性节点的nodeValue是属性的值

    nodeType属性
    nodeType属性规定节点的类型
    nodeType是只读的
    最重要的节点类型是:
    元素 1
    属性 2
    文本 3
    注释 8
    文档 9

    XML DOM Node List
    节点列表__由getElementByTagName()方法
    和childNodes属性_______返回
    DOM Node List
    当使用诸如childNodes或getElementByTagName()属性或方法时,会返回NodeList对象。

    Node List Length
    NodeList对象会保持自身的更新。如果删除或添加了元素。列表会自动更新。
    节点列表的length属性是列表中节点的数量。

    DOM Attribute List(Named Node Map)
    元素节点的attributes属性__返回__属性节点的列表。
    这被称为Named Node Map,除了方法和属性上的一些差别之外,它与节点列表相似。
    属性列表会保持自身的更新,如果删除或添加属性,这个列表会自动更新。
    x.getNamedItem()返回属性节点。

    XMLDOM 遍历 节点树
    遍历(Traverse)意味着在节点树中进行循环或移动。

    XML DOM 浏览器差异
    不同的浏览器____在XML DOM中____处理____空文本节点的方式_______是不同的。
    实例:
    忽略节点的空文本:方法是检查节点的nodeType,且仅处理元素节点。

    DOM解析中的浏览器差异
    所有现代浏览器都支持W3C DOM规范。
    不过,浏览器之间是有差异的。重要的区别有两点:
    1.加载XML的方式;
    2.处理空白和换行的方式。

    DOM空白和换行
    XML经常在节点之间含有换行或空白字符,

    DOM空白和换行
    XML经常在节点之间含有换行或空白字符,这是使用简单的编辑器(比如记事本)时经常出现的情况。
    Firefox以及其他一些浏览器,会把空白或换行作为文本节点来处理,而IE不会这样。

    XML DOM 定位节点
    可通过使用__节点间的关系__对节点进行定位。
    避免空的文本节点
    Firefox以及其他一些浏览器,把空的空白或换行当作文本节点,而IE不会这么做。

    XML DOM 获取节点值
    nodeValue_____属性________获取文本节点的文本值
    getAttribute("属性")方法__返回属性的值

    获取元素的值
    在DOM中,每种成分都是节点。元素节点没有文本值。
    元素节点的文本储存在子节点中。该节点成被成为文本节点。
    获取元素文本的方法,就是获取这个子节点(文本节点)的值。

    获取元素值
    getElementByTagName()方法__返回__包含拥有指定标签名的__所有元素的__节点列表。
    获取属性的值
    在DOM中,属性也是节点。与元素节点不同,属性节点拥有文本值。
    获取属性的值的方法,酒店hi获取它的文本值。
    可以通过使用getAttribute()方法或属性节点的nodeValue属性来完成这个任务。

    改变属性的值
    通过使用setAttribute()来改变属性
    setAttribute()方法__设置已有属性的值或创建新属性。
    xmlDoc = loadXMLDoc("books.xml");
    x=xmlDoc.getElementByTagName("book");
    x[0].setAttribute("category","child");

    通过使用nodeValue改变属性
    nodeValue属性也可以用于改改属性节点的值。
    xmlDoc = loadXMLDoc("books.xml");
    x = xmlDoc.getElementsByTagName("book")[0];
    y = x.getAttributeNode("category");
    y.nodeValue="child";

    getAttribute(): 返回属性值,是一个字符串
    getAttributeNode("属性名"):返回属性节点,是一个对象

    replaceChild()方法替换指定节点
    nodeValue属性替换文本节点中的文本

    替换文本节点中的数据
    replaceData()方法用于替换文本节点中的数据
    replaceData()方法有三个参数:
    offset 在何处开始替换字符,offset值以0开始
    length 要替换多少字符
    string 要插入的字符串

  • 相关阅读:
    linux环境下Redis主从复制和集群环境搭建
    2017年秋季学期软件工程第二次作业
    《人月神话》读后感
    功能需求描述
    初学Windows应用程序开发遇到的几个专业名词解释
    2017年秋季学期软件工程第一次作业(曹洪茹)
    第二次四则运算完善
    《人月神话》读后感
    软件工程课上随笔-规约
    2017软件工程第三次作业
  • 原文地址:https://www.cnblogs.com/jiunie/p/7470640.html
Copyright © 2011-2022 走看看