zoukankan      html  css  js  c++  java
  • xml基础

    XML用途?

    XML 被设计用来传输和存储数据。

    HTML 被设计用来显示数据。

    XML把数据从HTML分离。(通过XML,数据能独立存储在XML文件中,使我们能专注于用HTML/CSS工具设计网页布局)

    XML简化了数据传输,使我们可以在互联网不兼容系统之间交换数据。

    什么是XML

    • XML 指可扩展标记语言(EXtensible Markup Language)。

    XML与HTML之间的关系?

    XML是对HTML的补充。可以说,XML 不会替代 HTML,理解这一点很重要。在大多数 Web 应用程序中,XML 用于传输数据,而 HTML 用于格式化并显示数据。

    XML是独立于硬件和软件的信息传输工具。

    XML树结构

    XML结构必须包含一个根元素,XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。

    XMLHttpRequest 对象

    XMLHttpRequest 对象用于在后台与服务器交换数据

    所有现代浏览器(IE7+、Firefox、Chrome、Safari 和 Opera)都有内建的 XMLHttpRequest 对象、创建XMLHttpRequest对象的语法:

    xmlhttp=new XMLHttpRequest();

    XML 解析器

    XML 解析器把 XML 文档转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象。

    出于安全考虑,现代浏览器都设置了同源策略,不允许跨域访问。但我们可以通过<script>标签实现跨域访问。

    解析 XML 字符串

    把 XML 字符串解析到 XML DOM 对象中:

    txt="<bookstore><book>";
    txt=txt+"<title>Everyday Italian</title>";
    txt=txt+"<author>Giada De Laurentiis</author>";
    txt=txt+"<year>2005</year>";
    txt=txt+"</book></bookstore>";
    
    if (window.DOMParser)
    {
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(txt,"text/xml");
    }
    else // Internet Explorer
    {
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    xmlDoc.loadXML(txt); 
    }

    XML DOM

    DOM(Document Object Model 文档对象模型)定义了访问和操作文档的标准方法。

    XML DOM 把 XML 文档作为树结构来查看。

    所有元素可以通过 DOM 树来访问。可以修改或删除它们的内容,并创建新的元素。元素,它们的文本,以及它们的属性,都被认为是节点。

    我们可以吧把 XML 文档解析到 XML DOM 对象中,然后通过 JavaScript 提取一些信息。请注意,在XML文件中提取信息,我们可以用如下语法:

    getElementsByTagName("to")[0].childNodes[0].nodeValue

    请注意,即使 XML 文件只包含一个 <to> 元素,您仍然必须指定数组索引 [0]。这是因为 getElementsByTagName() 方法返回一个数组。

    一些常用的XML DOM属性

    x.nodeName - x 的名称
    x.nodeValue - x 的值
    x.parentNode - x 的父节点
    x.childNodes - x 的子节点
    x.attributes - x 的属性节点
    注释:在上面的列表中,x 是一个节点对象。

    一些常用的XML DOM方法

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

    如何访问DOM节点

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

    节点列表

    节点列表由 getElementsByTagName() 方法和 childNodes 属性返回。当使用诸如 childNodes 或 getElementsByTagName() 的属性或方法是,会返回节点列表对象。

    节点列表对象表示节点的列表,与 XML 中的顺序相同。节点列表中的节点使用从 0 开始的索引号进行访问。

    遍历节点树

    通常您想要循环 XML 文档,比如:当您需要提取每个元素的值时。

    这叫做"遍历节点树"。下面的实例遍历 <book> 的所有子节点,并显示他们的名称和值:

    <html>
    <head>
    <script src="loadxmlstring.js"></script>
    </head>
    <body>
    <script>
    text="<book>";
    text=text+"<title>Everyday Italian</title>";
    text=text+"<author>Giada De Laurentiis</author>";
    text=text+"<year>2005</year>";
    text=text+"</book>";
    
    xmlDoc=loadXMLString(text);
    
    // documentElement always represents the root node
    x=xmlDoc.documentElement.childNodes;
    for (i=0;i<x.length;i++)
    {
    document.write(x[i].nodeName);
    document.write(": ");
    document.write(x[i].childNodes[0].nodeValue);
    document.write("
    ");
    }
    </script>
    </body>
    </html>

    输出:

    title: Everyday Italian
    author: Giada De Laurentiis
    year: 2005

    XML DOM – Document 对象

    Document 对象代表整个 XML 文档。

     

    Document 对象是文档树的根,并为我们提供对文档数据的最初(或最顶层)的访问入口。

    由于元素节点、文本节点、注释、处理指令等均无法存在于文档之外,Document 对象也提供了创建这些对象的方法。Node 对象提供了一个 ownerDocument 属性,此属性可把它们与在其中创建它们的 Document 关联起来。

    通过 XML DOM 属性和方法,您可以访问 XML 文档中的每个节点。

    重要节点属性:nodeName、nodeValue 和 nodeType。

    当使用像 childNodes 或 getElementsByTagName() 的属性或方法时,返回节点列表对象。

    不同的浏览器处理节点之间的换行或空格字符时是不同的。

    如需忽略元素节点间的空文本字节,您可以检查节点类型。

    节点可以使用节点的关系进行导航。

    获取节点

    在 DOM 中,属性也是节点。与元素节点不同,属性节点拥有文本值。

    获取属性的值的方法,就是获取它的文本值。

    可以通过使用 getAttribute() 方法或属性节点的 nodeValue 属性来完成这个任务。

    改变节点

    在 DOM 中,属性也是节点。与元素节点不同,属性节点拥有文本值。

    改变属性的值的方法,就是改变它的文本值。

    可以通过使用 setAttribute() 方法或属性节点的 nodeValue 属性来完成这个任务。

    删除节点

    removeChild() 方法删除指定节点。

    removeAttribute() 方法删除指定属性。

    替换节点

    replaceChild() 方法替换指定节点。

    nodeValue 属性替换文本节点中的文本。

    替换文本节点中的数据

    replaceData() 方法用于替换文本节点中的数据。

    replaceData() 方法有三个参数:

    • offset - 在何处开始替换字符。offset 值以 0 开始。
    • length - 要替换多少字符
    • string - 要插入的字符串

    创建节点

    createElement() 方法创建一个新的元素节点:

    xmlDoc=loadXMLDoc("books.xml");
    
    newel=xmlDoc.createElement("edition");
    
    x=xmlDoc.getElementsByTagName("book")[0];
    x.appendChild(newel);

    createAttribute() 用于创建一个新的属性节点:

    xmlDoc=loadXMLDoc("books.xml");
    
    newatt=xmlDoc.createAttribute("edition");
    newatt.nodeValue="first";
    
    x=xmlDoc.getElementsByTagName("title");
    x[0].setAttributeNode(newatt);

    由于 setAttribute() 方法可以在属性不存在的情况下创建新的属性,我们可以使用这个方法来创建一个新的属性。

    createTextNode() 方法创建一个新的文本节点:

    添加节点

    appendChild() 方法向一个已有的节点添加一个子节点。新节点会添加(追加)到任何已有的子节点之后。

    insertBefore()方法用于在指定的子节点之前插入节点。

    参考资料

  • 相关阅读:
    Js获取当前浏览器的高和宽度
    js中使用键盘键,每个键的值
    网络搜索之实现网络蜘蛛
    进程和线程
    jquery.bgiframe.js在IE9下的错误
    [习题]GridView样版内部,改用CheckBox/Radio/DropDownList(单/复选)控件,取代TextBox
    [入门]C#语法里面,如何使用 VB的常用函数?(using Microsoft.VisualBasic)
    [全文下载/试读]补充,上集Ch. 3 Panel控件与常用属性,范例:问卷系统,动态产生「子问题」(使用障眼法)
    [ASP.NET] 上课 第一天的简介
    TextBox的 TextChanged事件#1 动态给予默认值,会触发TextChanged事件吗? / #2 EnableViewState属性是做什么用?
  • 原文地址:https://www.cnblogs.com/dion-90/p/8449280.html
Copyright © 2011-2022 走看看