新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论DOM, SAX, XPath等。
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 DOM/SAX/XPath 』 → dom专题 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 55564 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: dom专题 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     anchen0617 帅哥哟,离线,有人找我吗?双子座1983-6-17
      
      
      威望:5
      等级:大二(研究C++)
      文章:281
      积分:3413
      门派:XML.ORG.CN
      注册:2004/10/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给anchen0617发送一个短消息 把anchen0617加入好友 查看anchen0617的个人资料 搜索anchen0617在『 DOM/SAX/XPath 』的所有贴子 访问anchen0617的主页 引用回复这个贴子 回复这个贴子 查看anchen0617的博客楼主
    发贴心情 dom专题

    Dom操作xml的常用方法(附示例和演示)

      
    Dom操作xml的常用方法
    (Dom的全部方法和属性可到vs的对象浏览器察看)

    示例:


    '创建DOM对象
    set objDom=server.CreateObject("microsoft.xmldom")

    '取得xml数据
    '方法1 取得xml文件的xml数据
     objDom.load("c:\test.xml")
    '方法2 取得xml数据串的数据
     objDom.loadxml("")

    '创建一个节点对象
     Set Newnode=objDom.CreateElement("people")
    '给这个节点赴值
     Newnode.Text="人"
    ' 给这个节点添加属性
     Set NewAttribute=objDom.CreateNode("attribute","name","")
     NewAttribute.Text= "张三"
     Newnode.SetAttributeNode NewAttribute
    '给这个节点添加子节点
     Set NewnodeChild=objDom.CreateElement("address")
     Newnode.appendChild NewnodeChild
    '保存这个节点对象
    objDom.appendChild Newnode
    objDom.save("c:\test.xml")

    '查找一个节点对象
    set objtofind=objdom.documentElement.SelectSingleNode("//people/man")
    '取出这个节点对象的 节点名,节点值,某个属性值,和全部的xml
    nodename=objtofind.nodename
    nodevalue=objtofind.text
    objtofind.GetAttributeNode("name").NodeValue  '属性名为name的属性值

    '取出一个属性节点对象
    set objattrtofind=objdom.documentElement.SelectSingleNode("//people/man"). GetAttributeNode("name")
    '取出这个节点的属性名,属性值
    nodeattrname=objattrtofind.nodename
    nodeattrvalue=objattrtofind.nodevalue

    '删除一个节点对象
    set objnode=objdom.documentElement.SelectSingleNode("//people/man") '要删除的节点
    set objparentnode=objdom.documentElement.SelectSingleNode("//people")   '要删除的节点的父节点
    objparentnode.removeChild objnode

    '取出一个节点的字节点集合
    set objnodes=objdom.documentElement.SelectSingleNode("//people/man").ChildNodes
    遍历这个集合
    方法1
    for each element in objnodes
    response.write element.nodename  字节点名
    response.write element.text    字节点值
    next
    方法2
    domlength=objnodes.length
    for i = 0 to domlength-1
    response.write objnodes.childnodes(i).nodename  字节点名
    response.write objnodes.childnodes(i).text      字节点值
    next

    '取出一个节点的属性集合
    set objnodes=objdom.documentElement.SelectSingleNode("//people/man").GetAttributeNode("name").attributes
    遍历这个集合
    for each element in objnodes
    response.write element.nodename  属性名
    response.write element.nodevalue 属性值
    next


       收藏   分享  
    顶(1)
      




    ----------------------------------------------
    xml这门语言太好了,我们共同努力吧!!!!!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/12/23 14:11:00
     
     anchen0617 帅哥哟,离线,有人找我吗?双子座1983-6-17
      
      
      威望:5
      等级:大二(研究C++)
      文章:281
      积分:3413
      门派:XML.ORG.CN
      注册:2004/10/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给anchen0617发送一个短消息 把anchen0617加入好友 查看anchen0617的个人资料 搜索anchen0617在『 DOM/SAX/XPath 』的所有贴子 访问anchen0617的主页 引用回复这个贴子 回复这个贴子 查看anchen0617的博客2
    发贴心情 
    DOM 精简知识教程
    先来看一张简单的文档树

    很明显树的顶层节点是NodeA节点,接下来可以通过指定的合适节点移动到树中的任何点,结合以下的代码你可以更好的了解这棵树节点间的相互关系:
    NodeA.firstChild = NodeA1
    NodeA.lastChild = NodeA3
    NodeA.childNodes.length = 3
    NodeA.childNodes[0] = NodeA1
    NodeA.childNodes[1] = NodeA2
    NodeA.childNodes[2] = NodeA3
    NodeA1.parentNode = NodeA
    NodeA1.nextSibling = NodeA2
    NodeA3.prevSibling = NodeA2
    NodeA3.nextSibling = null
    NodeA.lastChild.firstChild = NodeA3a
    NodeA3b.parentNode.parentNode = NodeA

    DOM定义对操作一个文档对象的节点结构提供了实用的方法,它提供了像执行对象插入,更新,删除,克隆等这些常用的方法。
    insertBefore()--在参考子节点之前插入一个新的子节点.如果参考的子节点为null,则新的子节点将作为调用节点的最后一个子节点插入。
    replaceChild()--在childNodes集合种使用指定的newChild来代替oldChild;如果代替成功,则返回oldChild;如果newChild是null,则只需删除oldChild即可。
    removeChild()--从节点的ChildNodes集合中删除removeChild指定的节点,如果境晒?则返回删除的子节点。
    appendChild()--添加一个新节点到childNodes集合的末尾,如果成功,则返回新节点。
    cloneNode()--创建一个新的、复制的节点,并且如果传入的参数是true时,还将复制子节点,如果节点是一个元素,那么还将复制相应属性,返回新的节点。

    为了在一棵文档树中访问或者建立一个新的节点,可以用下面这些方法:
    getElementById()
    getElementsByTagName()
    createElement()
    createAttribute()
    createTextNode()
    注意:在一个页面中只有一个文档对象,除了getElementsByTagName()外,其它方法均只能通过document.methodName()调用。

    再看一下下面这个例子:
    <html>
    <head>
    <title></title>
    </head>
    <body>
    <p>This is a sample paragraph.</p>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    alert(document.documentElement.lastChild.firstChild.tagName);
    //-->
    </SCRIPT>
    </body>
    </html>
    结果将会显示"P",下面是一些解释
    document.documentElement - gives the page's HTML tag.
    lastChild - gives the BODY tag.
    firstChild - gives the first element in the BODY.
    tagName - gives that element's tag name, "P" in this case.
    另一个:
    <html>
    <head>
    <title></title>
    </head>
    <body>

    <p>This is a sample paragraph.</p>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    alert(document.documentElement.lastChild.firstChild.tagName);
    //-->
    </SCRIPT>
    </body>
    </html>
    这个例子和上面并没有什么大的区别,仅仅是多了一个空行,但是在NS中,会自动为空行加上一个节点所以返回值是"undefined",而在IE中将跳过空行仍然指向P标签。

    更常用的方法:
    <p id="myParagraph">This is a sample paragraph.</p>
    ...
    alert(document.getElementById("myParagraph").tagName);
    这种方法你不用关心节点在文档树的哪一个地方,而只要保证在页面中它的ID号是唯一的就可以了。

    接下来一种访问元素节点的方法是document.getElementsByTagName(),它的返回值是一个数组,例如你可以通过下面的例子改变整个页面的连接:
    var nodeList = document.getElementsByTagName("A");
    for (var i = 0; i < nodeList.length; i++)
    nodeList.style.color = "#ff0000";

    attribute和attributes
    attribute对象和元素相关,但是却没有被认为是文档树的一部分,因此属性不能作为子节点集合的一部分来使用。
    有三种方法可以为元素建立新的属性
    1.
    var attr = document.createAttribute("myAttribute");
    attr.value = "myValue";
    var el = document.getElementById("myParagraph");
    el.setAttributeNode(attr);
    2.
    var el = document.getElementById("myParagraph");
    el.setAttribute("myAttribute", "myValue");
    3.
    var el = document.getElementById("myParagraph");
    el.myAttribute = "myValue";
    你可以在html标签种定义自己的属性:
    <p id="myParagraph" myAttribute="myValue">This is a sample paragraph.</p>
    ...
    alert(document.getElementById("myParagraph").getAttribute("myAttribute"));
    返回值将是"myValue".但是请注意这里必须使用getAttribute,而不是AttributeName,因为有一些浏览器并不支持自定义属性。

    attributes也可以被轻易的从一个元素中删除,你可以使用removeAttribute()或者将element.attributeName指向一个null值。
    通过attributes我们就可以产生一些动态效果:
    <p id="sample1" align="left">Text in a paragraph element.</p>
    ... code for the links ...
    document.getElementById('sample1').setAttribute('align', 'left');
    document.getElementById('sample1').setAttribute('align', 'right');
    另一种:
    <p id="sample2" style="text-align:left;">Text in a paragraph
    element.</p>
    ... code for the links ...
    document.getElementById('sample2').style.textAlign = 'left';
    document.getElementById('sample2').style.textAlign = 'right';
    跟上面的例子一样,展示了可用通过元素修改style中的属性,甚至是class中的.唯一要提到的是textAlign是从style中的text-align中演变而来的,有一条基本规律,就是style中的属性如果出现-则在dom中将会被去掉并且随后的一个字母将改为大写,还有一点就是如果即使元素中没有style属性,上述例子同样可以使用。

    text nodes:
    先看一下例子:
    <p id="sample1">This is the initial text.</p>
    ... code for the links ...
    document.getElementById('sample1').firstChild.nodeValue =
    'Once upon a time...';
    document.getElementById('sample1').firstChild.nodeValue =
    '...in a galaxy far, far away';
    首先text nodes并没有像elements那样具有id属性,所有它并不能直接通过document.getElementById()或者document.getElementsByTagName()访问
    看一下下面的结构也许会更明白一些:

    可以看出通过document.getElementById('sample1').firstChild.nodeValue就可以读取或者设置text nodes的值了。

    另一个更加复杂一点的例子:
    <p id="sample2">This is the <b>initial</b> text.</p>
    它的文档结构

    在这里通过document.getElementById('sample1').firstChild.nodeValue讲仅仅改变"This is the"
    而initial text.将不会改变.在这里大家应该看到了它和innerHTML的不同了.当然你也可以这样用:
    document.getElementById('sample3').firstChild.nodeValue =
    '<b>Once</b> upon a time...';
    document.getElementById('sample3').firstChild.nodeValue =
    '...in a galaxy <i>far, far</i> away';
    其中的html代码将不会被解释,浏览器将把他们当成普通的文本来显示。

    创建和删除text nodes:
    var myTextNode = document.createTextNode("my text");
    通过上面的代码你可以创建一个新的text node,但是它并不是文档树的一部分,要让它显示在页面上就必须让它成为文档树中某一个节点的child,因为
    text nodes不能有儿子,所以你不能将它加入到一个text nodes中,attribute也不属于文档树的一部分,这条路也不行,现在只剩下elements nodes
    了,以下的例子展示了如何添加和删除一个text node:
    <p id="sample1">Initial text within a paragraph element.</p>
    ... code to add a text node ...
    var text = document.createTextNode(" new text " + (++counter1));
    var el = document.getElementById("sample1");
    el.appendChild(text);
    ... code to remove the last child node ...
    var el = document.getElementById("sample1");
    if (el.hasChildNodes())
    el.removeChild(el.lastChild);
    增加文本是很容易的,上面的代码建立了一个新的text node并且通过appendChild()方法将其加入到childNodes数组的末尾,并设置了一个counter1的全局变量,利于观察
    hasChildNodes()的返回值是true or false;用来判断当前节点是否还有child,以阻止当其没有child的时候调用removeChild()产生的错误。

    创建element nodes
    有了上面的基础,应该更容易理解了,先看一下下面的代码
    <div id="sample1">This text is in a DIV element.</div>
    ... code for the link ...
    var paraEl, boldEl;
    paraEl = document.createElement("p");
    boldEl = document.createElement("b");
    paraEl.appendChild(document.createTextNode("This is a new paragraph with "));
    boldEl.appendChild(document.createTextNode("bold"));
    paraEl.appendChild(boldEl);
    paraEl.appendChild(document.createTextNode(" text added to the DIV"));
    document.getElementById("sample1").appendChild(paraEl);
    你还可以直接为新加的element nodes设置attribute,以下两种都可以:
    boldEl.style.color = "#ffff00";
    paraEl.appendChild(boldEl);
    或者:
    paraEl.appendChild(boldEl);
    boldEl.style.color = "#ffff00";

    ----------------------------------------------
    xml这门语言太好了,我们共同努力吧!!!!!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/12/23 14:12:00
     
     anchen0617 帅哥哟,离线,有人找我吗?双子座1983-6-17
      
      
      威望:5
      等级:大二(研究C++)
      文章:281
      积分:3413
      门派:XML.ORG.CN
      注册:2004/10/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给anchen0617发送一个短消息 把anchen0617加入好友 查看anchen0617的个人资料 搜索anchen0617在『 DOM/SAX/XPath 』的所有贴子 访问anchen0617的主页 引用回复这个贴子 回复这个贴子 查看anchen0617的博客3
    发贴心情 
    DOM 精简知识教程
    先来看一张简单的文档树

    很明显树的顶层节点是NodeA节点,接下来可以通过指定的合适节点移动到树中的任何点,结合以下的代码你可以更好的了解这棵树节点间的相互关系:
    NodeA.firstChild = NodeA1
    NodeA.lastChild = NodeA3
    NodeA.childNodes.length = 3
    NodeA.childNodes[0] = NodeA1
    NodeA.childNodes[1] = NodeA2
    NodeA.childNodes[2] = NodeA3
    NodeA1.parentNode = NodeA
    NodeA1.nextSibling = NodeA2
    NodeA3.prevSibling = NodeA2
    NodeA3.nextSibling = null
    NodeA.lastChild.firstChild = NodeA3a
    NodeA3b.parentNode.parentNode = NodeA

    DOM定义对操作一个文档对象的节点结构提供了实用的方法,它提供了像执行对象插入,更新,删除,克隆等这些常用的方法。
    insertBefore()--在参考子节点之前插入一个新的子节点.如果参考的子节点为null,则新的子节点将作为调用节点的最后一个子节点插入。
    replaceChild()--在childNodes集合种使用指定的newChild来代替oldChild;如果代替成功,则返回oldChild;如果newChild是null,则只需删除oldChild即可。
    removeChild()--从节点的ChildNodes集合中删除removeChild指定的节点,如果境晒?则返回删除的子节点。
    appendChild()--添加一个新节点到childNodes集合的末尾,如果成功,则返回新节点。
    cloneNode()--创建一个新的、复制的节点,并且如果传入的参数是true时,还将复制子节点,如果节点是一个元素,那么还将复制相应属性,返回新的节点。

    为了在一棵文档树中访问或者建立一个新的节点,可以用下面这些方法:
    getElementById()
    getElementsByTagName()
    createElement()
    createAttribute()
    createTextNode()
    注意:在一个页面中只有一个文档对象,除了getElementsByTagName()外,其它方法均只能通过document.methodName()调用。

    再看一下下面这个例子:
    <html>
    <head>
    <title></title>
    </head>
    <body>
    <p>This is a sample paragraph.</p>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    alert(document.documentElement.lastChild.firstChild.tagName);
    //-->
    </SCRIPT>
    </body>
    </html>
    结果将会显示"P",下面是一些解释
    document.documentElement - gives the page's HTML tag.
    lastChild - gives the BODY tag.
    firstChild - gives the first element in the BODY.
    tagName - gives that element's tag name, "P" in this case.
    另一个:
    <html>
    <head>
    <title></title>
    </head>
    <body>

    <p>This is a sample paragraph.</p>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    alert(document.documentElement.lastChild.firstChild.tagName);
    //-->
    </SCRIPT>
    </body>
    </html>
    这个例子和上面并没有什么大的区别,仅仅是多了一个空行,但是在NS中,会自动为空行加上一个节点所以返回值是"undefined",而在IE中将跳过空行仍然指向P标签。

    更常用的方法:
    <p id="myParagraph">This is a sample paragraph.</p>
    ...
    alert(document.getElementById("myParagraph").tagName);
    这种方法你不用关心节点在文档树的哪一个地方,而只要保证在页面中它的ID号是唯一的就可以了。

    接下来一种访问元素节点的方法是document.getElementsByTagName(),它的返回值是一个数组,例如你可以通过下面的例子改变整个页面的连接:
    var nodeList = document.getElementsByTagName("A");
    for (var i = 0; i < nodeList.length; i++)
    nodeList.style.color = "#ff0000";

    attribute和attributes
    attribute对象和元素相关,但是却没有被认为是文档树的一部分,因此属性不能作为子节点集合的一部分来使用。
    有三种方法可以为元素建立新的属性
    1.
    var attr = document.createAttribute("myAttribute");
    attr.value = "myValue";
    var el = document.getElementById("myParagraph");
    el.setAttributeNode(attr);
    2.
    var el = document.getElementById("myParagraph");
    el.setAttribute("myAttribute", "myValue");
    3.
    var el = document.getElementById("myParagraph");
    el.myAttribute = "myValue";
    你可以在html标签种定义自己的属性:
    <p id="myParagraph" myAttribute="myValue">This is a sample paragraph.</p>
    ...
    alert(document.getElementById("myParagraph").getAttribute("myAttribute"));
    返回值将是"myValue".但是请注意这里必须使用getAttribute,而不是AttributeName,因为有一些浏览器并不支持自定义属性。

    attributes也可以被轻易的从一个元素中删除,你可以使用removeAttribute()或者将element.attributeName指向一个null值。
    通过attributes我们就可以产生一些动态效果:
    <p id="sample1" align="left">Text in a paragraph element.</p>
    ... code for the links ...
    document.getElementById('sample1').setAttribute('align', 'left');
    document.getElementById('sample1').setAttribute('align', 'right');
    另一种:
    <p id="sample2" style="text-align:left;">Text in a paragraph
    element.</p>
    ... code for the links ...
    document.getElementById('sample2').style.textAlign = 'left';
    document.getElementById('sample2').style.textAlign = 'right';
    跟上面的例子一样,展示了可用通过元素修改style中的属性,甚至是class中的.唯一要提到的是textAlign是从style中的text-align中演变而来的,有一条基本规律,就是style中的属性如果出现-则在dom中将会被去掉并且随后的一个字母将改为大写,还有一点就是如果即使元素中没有style属性,上述例子同样可以使用。

    text nodes:
    先看一下例子:
    <p id="sample1">This is the initial text.</p>
    ... code for the links ...
    document.getElementById('sample1').firstChild.nodeValue =
    'Once upon a time...';
    document.getElementById('sample1').firstChild.nodeValue =
    '...in a galaxy far, far away';
    首先text nodes并没有像elements那样具有id属性,所有它并不能直接通过document.getElementById()或者document.getElementsByTagName()访问
    看一下下面的结构也许会更明白一些:

    可以看出通过document.getElementById('sample1').firstChild.nodeValue就可以读取或者设置text nodes的值了。

    另一个更加复杂一点的例子:
    <p id="sample2">This is the <b>initial</b> text.</p>
    它的文档结构

    在这里通过document.getElementById('sample1').firstChild.nodeValue讲仅仅改变"This is the"
    而initial text.将不会改变.在这里大家应该看到了它和innerHTML的不同了.当然你也可以这样用:
    document.getElementById('sample3').firstChild.nodeValue =
    '<b>Once</b> upon a time...';
    document.getElementById('sample3').firstChild.nodeValue =
    '...in a galaxy <i>far, far</i> away';
    其中的html代码将不会被解释,浏览器将把他们当成普通的文本来显示。

    创建和删除text nodes:
    var myTextNode = document.createTextNode("my text");
    通过上面的代码你可以创建一个新的text node,但是它并不是文档树的一部分,要让它显示在页面上就必须让它成为文档树中某一个节点的child,因为
    text nodes不能有儿子,所以你不能将它加入到一个text nodes中,attribute也不属于文档树的一部分,这条路也不行,现在只剩下elements nodes
    了,以下的例子展示了如何添加和删除一个text node:
    <p id="sample1">Initial text within a paragraph element.</p>
    ... code to add a text node ...
    var text = document.createTextNode(" new text " + (++counter1));
    var el = document.getElementById("sample1");
    el.appendChild(text);
    ... code to remove the last child node ...
    var el = document.getElementById("sample1");
    if (el.hasChildNodes())
    el.removeChild(el.lastChild);
    增加文本是很容易的,上面的代码建立了一个新的text node并且通过appendChild()方法将其加入到childNodes数组的末尾,并设置了一个counter1的全局变量,利于观察
    hasChildNodes()的返回值是true or false;用来判断当前节点是否还有child,以阻止当其没有child的时候调用removeChild()产生的错误。

    创建element nodes
    有了上面的基础,应该更容易理解了,先看一下下面的代码
    <div id="sample1">This text is in a DIV element.</div>
    ... code for the link ...
    var paraEl, boldEl;
    paraEl = document.createElement("p");
    boldEl = document.createElement("b");
    paraEl.appendChild(document.createTextNode("This is a new paragraph with "));
    boldEl.appendChild(document.createTextNode("bold"));
    paraEl.appendChild(boldEl);
    paraEl.appendChild(document.createTextNode(" text added to the DIV"));
    document.getElementById("sample1").appendChild(paraEl);
    你还可以直接为新加的element nodes设置attribute,以下两种都可以:
    boldEl.style.color = "#ffff00";
    paraEl.appendChild(boldEl);
    或者:
    paraEl.appendChild(boldEl);
    boldEl.style.color = "#ffff00";

    ----------------------------------------------
    xml这门语言太好了,我们共同努力吧!!!!!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/12/23 14:13:00
     
     anchen0617 帅哥哟,离线,有人找我吗?双子座1983-6-17
      
      
      威望:5
      等级:大二(研究C++)
      文章:281
      积分:3413
      门派:XML.ORG.CN
      注册:2004/10/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给anchen0617发送一个短消息 把anchen0617加入好友 查看anchen0617的个人资料 搜索anchen0617在『 DOM/SAX/XPath 』的所有贴子 访问anchen0617的主页 引用回复这个贴子 回复这个贴子 查看anchen0617的博客4
    发贴心情 
    DOM属性

    DOM提供了一套属性用于导航、访问和更新文档内容,其中包括只读类型的属性和可读写类型的属性。

      下表是只读类型的属性:

    DOM对象属性 返 回 值
    FirstChild 返回一个对象(Object),表示第一个孩子节点(child node)。
    LastChild 返回一个对象(Object),表示最后一个孩子节点(child node)。
    NextSibling 返回一个对象(Object),表示下一个相邻的兄弟节点。
    NodeName 返回节点对应的HTML标记。比如:P,Script。对应文本项节点,返回#text。
    nodeType 返回节点的类型,
    1表示此节点是标记(tag),
    2表示属性(attribute),
    3表示文本项。
    parentNode 返回一个对象(Object),表示当前节点的双亲节点(parent node)。
    previousSibling 返回一个对象(Object),表示前一个相邻的兄弟节点。
    specified 返回一个布尔型变量(Boolean),表示是否设置了属性值(attribute)。

      下表是可读写类型的属性:

    DOM对象属性 返 回 值
    data 返回一个字符串,表示文本项节点的值。如果是其他类型节点,返回undefined。
    nodeValue 返回一个字符串,表示文本项节点的值。如果是其他类型节点,返回null。

      下表是DOM中相关属性集合:

    DOM对象属性 返 回 值
    attributes 表示节点的属性集合,通过id来访问,比如attributes.id。
    childNodes 表示节点的孩子节点集合,通过数组索引方式访问,比如:childNodes[2]。

    ----------------------------------------------
    xml这门语言太好了,我们共同努力吧!!!!!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/12/23 14:14:00
     
     anchen0617 帅哥哟,离线,有人找我吗?双子座1983-6-17
      
      
      威望:5
      等级:大二(研究C++)
      文章:281
      积分:3413
      门派:XML.ORG.CN
      注册:2004/10/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给anchen0617发送一个短消息 把anchen0617加入好友 查看anchen0617的个人资料 搜索anchen0617在『 DOM/SAX/XPath 』的所有贴子 访问anchen0617的主页 引用回复这个贴子 回复这个贴子 查看anchen0617的博客5
    发贴心情 
    DOM简介(1)

    1.文档对象模型(DOM)
        DOM是HTML和XML文档的编程基础,它定义了处理执行文档的途径。编程者可以使用DOM增加文档、定位文档结构、填加
    修改删除文档元素。W3C的重要目标是把利用DOM提供一个使用于多个平台的编程接口。W3C DOM被设计成适合多个平台,可
    使用任意编程语言实现的方法。

    2.节点接口
        XML parser用来装载XML文档到缓存中,文档装载时,可以使用DOM进行检索和处理。DOM采用树形结构表示 XML文档,
    文档元素是树的最高阶层,该元素有一个或多个孩子节点用来表示树的分枝。
        节点接口程序通常用来读和写XML节点树中的个别元素,文档元素的孩子节点属性可以用来构造个别元素节点。XML
    parser用来证明Web中的DOM支持遍历节点树的所有函数,并可通过它们访问节点和及其属性、插入删除节点、转换节点树
    到XML中。
        所有Microsoft XML parser函数得到W3C XML DOM的正式推荐,除了load和loadXML函数(正式的DOM不包括标准函数
    loading XML文档)。有13个节点类型被Microsoft XML parser支持,下面列出常用节点:

      节点类型                                  例子
    Document type                    <!DOCTYPE food SYSTEM "food.dtd">
    Processing instruction              <?xml version="1.0"?>
    Element                          <drink type="beer">Carlsberg</drink>
    Attribute                          type="beer"
    Text                               Carlsberg

    3.使用XML parser
        为了更加熟练的处理XML文档,必须使用XML parser。Microsoft XML parser是IIS5.0所带的一个COM组件,一旦安装
    了IIS5.0,parser可以利用HTML文档和ASP文件中的脚本。
    Microsoft XMLDOM parser支持以下编程模式:
    ----支持 javascript, VBScript, Perl, VB, Java, C++ 等等
    ----支持 W3C XML 1.0 和 XML DOM
    ----支持 DTD 和 validation

        如果使用IE5.0中的javascript,可以使用下面的XML文档对象:
      var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")

        如果使用VBScript,可以使用下面的XML文档对象:
      set xmlDoc = CreateObject("Microsoft.XMLDOM")

        如果使用ASP,可以使用下面的XML文档对象:
      set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")

    4.装载一个XML文件到parser中
        下面的代码装载存在的XML文档进入XML parser:

    <script language="javascript">
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
    xmlDoc.async="false"
    xmlDoc.load("note.xml")
    // ....... processing the document goes here
    </script>

        第一行脚本增加了一个Microsoft XML parser实例,第三行装载名为”note.xml”的XML文档进入parser中。第二行保
    证文档装载完成以后parser进行下一步工作。

    ----------------------------------------------
    xml这门语言太好了,我们共同努力吧!!!!!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/12/23 14:16:00
     
     anchen0617 帅哥哟,离线,有人找我吗?双子座1983-6-17
      
      
      威望:5
      等级:大二(研究C++)
      文章:281
      积分:3413
      门派:XML.ORG.CN
      注册:2004/10/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给anchen0617发送一个短消息 把anchen0617加入好友 查看anchen0617的个人资料 搜索anchen0617在『 DOM/SAX/XPath 』的所有贴子 访问anchen0617的主页 引用回复这个贴子 回复这个贴子 查看anchen0617的博客6
    发贴心情 
    5. parseError对象
        打开XMl文档时,XML Parser产生错误代码,并存在parseError对象中,包括错误代码、错误文本和错误行号,等信
    息。

    6.文件错误
        下面的例子将试图装载一个不存在的文件,然后产生相应的错误代码:
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
    xmlDoc.async="false"
    xmlDoc.load("ksdjf.xml")

    document.write("<br>Error Code: ")
    document.write(xmlDoc.parseError.errorCode)
    document.write("<br>Error Reason: ")
    document.write(xmlDoc.parseError.reason)
    document.write("<br>Error Line: ")
    document.write(xmlDoc.parseError.line)

    7.XML错误
        下面使用不正确的格式装载XMl文档,
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
    xmlDoc.async="false"
    xmlDoc.load("note_error.xml")
        
    document.write("<br>Error Code: ")
    document.write(xmlDoc.parseError.errorCode)
    document.write("<br>Error Reason: ")
    document.write(xmlDoc.parseError.reason)
    document.write("<br>Error Line: ")
    document.write(xmlDoc.parseError.line)

    8. parseError属性
        属性描述:
    errorCode 返回长整型错误代码
    reason  返回字符串型错误原因
    line  返回长整型错误行号
    linePos  返回长整型错误行号位置
    srcText  返回字符串型产生错误原因
    url 返回url装载文档指针
    filePos  返回长整型错误文件位置

    9.遍历节点树
        一种通用的析取XML文档的方法是遍历节点树和它的元素值。下面是使用VBScript写的遍历节点树的程序代码:
    set xmlDoc=CreateObject("Microsoft.XMLDOM")
    xmlDoc.async="false"
    xmlDoc.load("note.xml")

    for each x in xmlDoc.documentElement.childNodes
      document.write(x.nodename)
      document.write(": ")
      document.write(x.text)
    next

    ----------------------------------------------
    xml这门语言太好了,我们共同努力吧!!!!!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/12/23 14:17:00
     
     calakuai 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:2
      积分:63
      门派:XML.ORG.CN
      注册:2004/11/27

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给calakuai发送一个短消息 把calakuai加入好友 查看calakuai的个人资料 搜索calakuai在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看calakuai的博客7
    发贴心情 
    写的不错,dom的操作都涉及到了,是难得的一份学习的教材
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/1/14 4:13:00
     
     small 帅哥哟,离线,有人找我吗?金牛座1985-4-25
      
      
      等级:大一(高数修炼中)
      文章:43
      积分:191
      门派:XML.ORG.CN
      注册:2005/1/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给small发送一个短消息 把small加入好友 查看small的个人资料 搜索small在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看small的博客8
    发贴心情 
    支持啊。。顶。

    ----------------------------------------------
    [img]http://fm214.com/UploadFile/2004-10/200410258452655.bmp[/img] 我这辈子要干三件大事: 1给珠穆朗玛峰安电梯 2给万里长城贴瓷砖 3让所有的国家元首都来学XML

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/2/16 17:29:00
     
     miniJJ 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:18
      积分:136
      门派:XML.ORG.CN
      注册:2005/3/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给miniJJ发送一个短消息 把miniJJ加入好友 查看miniJJ的个人资料 搜索miniJJ在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看miniJJ的博客9
    发贴心情 
    oh , thankyou . I like it 楼猪真是雪中送碳啊,令小弟对你的景仰有如黄河泛滥而一发不可收拾
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/3/27 13:04:00
     
     RayFairy 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:8
      积分:82
      门派:XML.ORG.CN
      注册:2005/8/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给RayFairy发送一个短消息 把RayFairy加入好友 查看RayFairy的个人资料 搜索RayFairy在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看RayFairy的博客10
    发贴心情 
    3Q
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/8/17 21:23:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 DOM/SAX/XPath 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/3/29 0:06:11

    本主题贴数22,分页: [1] [2] [3]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    187.012ms