独上高楼网站
  •    你所在位置:首页 VS.netXMLXML基础教程〉XML基础教程:XML DOM—属性和方法
  • XML基础教程:XML DOM—属性和方法
  • 作者:佚名  文章来源:ttp://www.w3school.com.cn  发布日期:2008-03-06  浏览次数:403
  • 打印这篇文章
  • XML DOM—属性和方法

    属性和方法向 XML DOM 定义了编程接口。

    实例

    加载并解析 XML 文件
    加载并解析 XML 字符串

    编程接口

    DOM 把 XML 模拟为一系列节点接口。可通过 JavaScript 或其他编程语言来访问节点。在本教程中,我们使用 JavaScript。

    对 DOM 的编程接口是通过一套标准的属性和方法来定义的。

    属性经常按照“某事物是什么”的方式来使用(例如节点名是 "book")。

    方法经常按照“对某事物做什么”的方式来使用(例如删除 "book" 节点)。

    XML DOM 属性

    一些典型的 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 是一个节点对象。

    实例

    从 books.xml 中的 < title> 元素获取文本的 JavaScript 代码:

    txt=xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue

    在此语句执行后,txt 保存的值是 "Everyday Italian"。

    解释:

    • xmlDoc - 由解析器创建的 XML DOM
    • getElementsByTagName("title")[0] - 第一个 < title> 元素
    • childNodes[0] - < title> 元素的第一个子节点 (文本节点)
    • nodeValue - 节点的值 (文本自身)

    在上面的例子中,getElementsByTagName 是方法,而 childNodes 和 nodeValue 是属性。

    解析 XML 文件 - 跨浏览器实例

    下面的例子把 XML 文档 ("books.xml") 载入了 XML 解析器:

    < html>
    < body>
    < script type="text/javascript">
    try //Internet Explorer
      {
      xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
      }
    catch(e)
      {
      try //Firefox, Mozilla, Opera, etc.
        {
        xmlDoc=document.implementation.createDocument("","",null);
        }
      catch(e) {alert(e.message)}
      }
    try 
      {
      xmlDoc.async=false;
      xmlDoc.load("books.xml");
      document.write(xmlDoc.getElementsByTagName("title")
      [0].childNodes[0].nodeValue);
      document.write("< br />");
      document.write(xmlDoc.getElementsByTagName("author")
      [0].childNodes[0].nodeValue);
      document.write("< br />");
      document.write(xmlDoc.getElementsByTagName("year")
      [0].childNodes[0].nodeValue);
      }
    catch(e) {alert(e.message)}
    < /script>
    < /body>
    < /html>

    输出:

    Everyday Italian
    Giada De Laurentiis
    2005
    

    TIY

    解析 XML 字符串 - 跨浏览器实例

    下面的例子载入并解析了一个 XML 字符串:

    < html>
    < body>
    < script type="text/javascript">
    text="< bookstore>"
    text=text+"< book>";
    text=text+"< title>Everyday Italian< /title>";
    text=text+"< author>Giada De Laurentiis< /author>";
    text=text+"< year>2005< /year>";
    text=text+"< /book>";
    text=text+"< /bookstore>";
    
    try //Internet Explorer
      {
      xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
      xmlDoc.async="false";
      xmlDoc.loadXML(text);
      }
    catch(e)
      {
      try //Firefox, Mozilla, Opera, etc.
        {
        parser=new DOMParser();
        xmlDoc=parser.parseFromString(text,"text/xml");
        }
      catch(e) {alert(e.message)}
      }
    try 
    {
    document.write(xmlDoc.getElementsByTagName("title")
    [0].childNodes[0].nodeValue);
    document.write("< br />");
    document.write(xmlDoc.getElementsByTagName("author")
    [0].childNodes[0].nodeValue);
    document.write("< br />");
    document.write(xmlDoc.getElementsByTagName("year")
    [0].childNodes[0].nodeValue);
    }
    catch(e) {alert(e.message)}
    < /script>
    < /body>
    < /html>
    

     

    输出:

     

    Everyday Italian
    Giada De Laurentiis
    2005
    

     

    TIY

     

    注释:Internet Explorer 使用 loadXML() 方法来解析 XML 字符串,而其他浏览器使用 DOMParser 对象。

    在上面的例子中,我们为每个元素使用数组下标 [0],即使只有一本书。这是由于 getElementsByTagName() 方法总是会返回数组。

  • 打印这篇文章
  • 与本文主题相关的文章
  • 返回首页