blogjava's web log

          blogjava's web log
          ...

          DOM對(duì)象簡(jiǎn)單使用

          很久沒(méi)有真正的寫(xiě)東西了..忙著找工作..現(xiàn)在工作有個(gè)著落了..又有心思研究.學(xué)習(xí)新的東西了

          這篇為以后學(xué)ajax打基礎(chǔ)的


          生成DOM文檔對(duì)象的方法
          var xmlDoc=new ActiveXObject("Msxml2.DOMDocument.4.0");
          ??生成XML文檔對(duì)象xmlDoc,xmlDoc中包含XML文檔中所有元素和節(jié)點(diǎn)

          ?xmlDoc.async=false;
          裝載XML文檔完畢后才開(kāi)始處理下一步驟

          xmlDoc.load("1.xml");
          將XML文檔裝載到文檔對(duì)象中,在內(nèi)存中形成文檔對(duì)象樹(shù)

          DOM對(duì)象

          1.IXMLDOMDocument/DOMDocument
          2.IXMLDOMNode
          3.IXMLDOMNodeList
          4.IXMLDOMParseError
          5.IXMLDOMAttribute
          6.IXMLDOMDocumentType

          1.IXMLDOMDocument/DOMDocument
          表示DOM樹(shù)的最頂層節(jié)點(diǎn)
          屬性
          async--是否可以異步下載(可讀寫(xiě)屬性)
          attributes--返回節(jié)點(diǎn)的屬性列表
          baseName--返回節(jié)點(diǎn)的標(biāo)記名稱
          childNodes--子節(jié)點(diǎn)列表
          documentElement--返回文檔的根元素(可讀寫(xiě)屬性)
          方法
          appendChild(在當(dāng)前節(jié)點(diǎn)的最后增加一個(gè)新的子節(jié)點(diǎn))

          createNode(根據(jù)條件生成一個(gè)新節(jié)點(diǎn))
          createnode(type,name,namespaceURL)

          IXMLDOMDocument/DOMDocument示例


          var ?oNodeMap,str,oList,item;
          ????????
          var ?xmlDoc = new ?ActiveXObject( " Msxml2.DOMDocument.4.0 " );
          ????????xmlDoc.async
          = false ;
          ????????xmlDoc.load(
          " candidate.xml " );
          ????????
          if (xmlDoc.parseError != 0 )
          ????????????document.writeln(xmlDoc.parseError.reason
          + " <br> " );
          ????????
          else
          ????????
          {
          ????????????oNodeMap
          = xmlDoc.documentElement.attributes;
          ????????????document.write(oNodeMap.length
          + " <br> " );
          ????????str
          = xmlDoc.documentElement.childNodes[ 1 ].baseName;
          ????????????document.write(str
          + " <br> " );
          ????????????oList
          = xmlDoc.documentElement.childNodes;
          ????????????
          for ( var ?i = 0 ;i < oList.length;i ++ )
          ????????????????document.write(oList[i].xml
          + " <br> " );
          ????????}



          < script?language = " javascript " >
          ????????
          var ?xmlDoc = new ?ActiveXObject( " Msxml2.DOMDocument.4.0 " );
          ????????xmlDoc.async
          = false ;
          ????????xmlDoc.load(
          " candidate.xml " );
          ????????
          var ?root = xmlDoc.documentElement;
          ????????document.write(root.xml);
          ????????document.write(
          " <br>--------------------------<br> " );
          ????????
          var ?node = xmlDoc.createNode( 1 , " 創(chuàng)建節(jié)點(diǎn) " , "" );
          ????????node.text
          = " 這是新創(chuàng)建得節(jié)點(diǎn) " ;
          ????????root.appendChild(node);
          ????????window.alert(root.xml);
          ????????document.write(root.xml);
          ????
          </ script >


          IXMLDOMNode

          屬性
          lastChild--返回最后一個(gè)子節(jié)點(diǎn)
          nextSibling--指向同一層的下一個(gè)兄弟節(jié)點(diǎn)
          xml--用XML格式表現(xiàn)該節(jié)點(diǎn)和所有子節(jié)點(diǎn)的內(nèi)容
          方法
          selectNodes--根據(jù)匹配模式操作來(lái)返回符合要求的節(jié)點(diǎn)集合
          selectSingleNode--根據(jù)匹配模式操作來(lái)返回符合要求的第一個(gè)節(jié)點(diǎn)
          IXMLDOMNode是DOM的基本對(duì)象,所有節(jié)點(diǎn)都可以看作是一個(gè)IXMLDOMNode對(duì)象,所有其它DOM對(duì)象接口都是繼承它的屬性和方法。

          < html >
          ???
          < body >
          ??????
          < script? language ="javascript" >
          ????????
          var ?xmlDoc = new ?ActiveXObject( " Msxml2.DOMDocument.4.0 " );
          ????????xmlDoc.async
          = false ;
          ????????xmlDoc.load(
          " candidate.xml " );
          ????????
          var ?root = xmlDoc.documentElement;
          ????????
          var ?node = root.lastChild;
          ????????window.alert(node.xml);
          ????????
          var ?firstNode = root.childNodes[ 0 ];
          ????????
          var ?nextNode = firstNode.nextSibling;
          ????????window.alert(nextNode.xml);
          ????
          </ script >
          ???
          </ body >
          </ html >

          < html >
          ???
          < body >
          ??????
          < script? language ="javascript" >
          ????????
          var ?xmlDoc = new ?ActiveXObject( " Msxml2.DOMDocument.4.0 " );
          ????????xmlDoc.async
          = false ;
          ????????xmlDoc.load(
          " candidate.xml " );
          ????????
          var ?root = xmlDoc.documentElement;
          ????????
          var ?node = root.selectNodes( " PERSON/NAME " );
          ????????window.alert(node.length);
          ????
          </ script >
          ???
          </ body >
          </ html >


          IXMLDOMNodeList

          屬性
          length--接口對(duì)象中包含的節(jié)點(diǎn)數(shù)量。
          方法
          nextNode--返回節(jié)點(diǎn)集合中下一個(gè)節(jié)點(diǎn)。
          節(jié)點(diǎn)的集合
          IXMLDOMParseError
          屬性
          line--錯(cuò)誤所在行號(hào)
          linepos--錯(cuò)誤在行中的位置
          reason--發(fā)生錯(cuò)誤的原因
          srcText--錯(cuò)誤行文本
          用此接口捕獲XML文檔中存在的錯(cuò)誤(包括XML結(jié)構(gòu)完整錯(cuò)誤及有效性錯(cuò)誤)

          IXMLDOMParseError示例

          < html >
          ???
          < body >
          ??????
          < script? language ="javascript" >
          ????????
          var ?xmlDoc = new ?ActiveXObject( " Msxml2.DOMDocument.4.0 " );
          ????????xmlDoc.async
          = false ;
          ????????xmlDoc.load(
          " errorxml.xml " );
          ????????
          if (xmlDoc.parseError.errorCode != 0 )
          ????????
          {
          ????document.writeln(
          " 錯(cuò)誤所在的行號(hào): " ? + ?xmlDoc.parseError.line? + ? " <br> " );
          ????document.writeln(
          " 錯(cuò)誤所在的列號(hào): " ? + ?xmlDoc.parseError.linepos? + ? " <br> " );
          ????document.writeln(
          " 錯(cuò)誤原因: " ? + ?xmlDoc.parseError.reason? + ? " <br> " );
          ????document.writeln(
          " 錯(cuò)誤行文本: " ? + ?xmlDoc.parseError.srcText? + ? " <br> " );
          ????????}

          ????
          </ script >
          ???
          </ body >
          </ html >


          IXMLDOMAttribute
          表示元素的相關(guān)屬性
          屬性
          nodeType--返回節(jié)點(diǎn)類型
          ownerDocument--返回該節(jié)點(diǎn)的根節(jié)點(diǎn)
          text--返回節(jié)點(diǎn)的文本和子節(jié)點(diǎn)樹(shù)
          value--返回屬性的值
          xml--返回當(dāng)前節(jié)點(diǎn)及其所有子節(jié)點(diǎn)的內(nèi)容
          方法
          appendChild
          selectSingleNode
          IDOMAttribute示例

          <html>
          <body>
          ???
          <script?language="javascript">
          ????????
          var?xmlDoc=new?ActiveXObject("Msxml2.DOMDocument.4.0");
          ????????xmlDoc.async
          =false;
          ????????xmlDoc.load(
          "candidate.xml");
          ????????
          var?node=xmlDoc.documentElement.childNodes[0];
          document.write(
          "節(jié)點(diǎn)類型:"+node.nodeType+"<br>");
          document.write(
          "根元素節(jié)點(diǎn)名稱:"?+node.ownerDocument.documentElement.tagName?+?"<br>");
          document.write?(
          "當(dāng)前節(jié)點(diǎn)的屬性值:"?+?node.attributes[0].value?+?"<br>");
          document.write(
          "當(dāng)前節(jié)點(diǎn)及其子節(jié)點(diǎn)所包含的文本:"?+?node.text?+?"<br>");
          ????
          </script>?
          </body>
          </html>

          IXMLDOMDocumentType

          屬性
          entities--返回實(shí)體集,包括內(nèi)部和外部DTD定義的
          name--返回文檔類型的名字
          nodeTypeString--返回節(jié)點(diǎn)類型的字符串表示
          方法
          removeChild--從返回的子節(jié)點(diǎn)集中刪除特定子節(jié)點(diǎn),并返回它
          replaceChild--從返回的子節(jié)點(diǎn)集中用新節(jié)點(diǎn)替換特定老節(jié)點(diǎn)


          IXMLDOMDocumentType示例

          <html>
          ????
          <body>
          ????
          <script?language="javascript">
          ????????
          var?xmlDoc=new?ActiveXObject("Msxml2.DOMDocument.4.0");
          ????????xmlDoc.async
          =false;
          ????????xmlDoc.load(
          "candidate.xml");
          ????????
          var?root=xmlDoc.documentElement;
          ????????
          var?node=root.childNodes[1];
          ????????window.alert(
          "當(dāng)前節(jié)點(diǎn)的類型為:"?+?node.childNodes[0].nodeTypeString);
          ????????
          var?element=xmlDoc.createElement("Resume");
          ????????element.text
          ="添加的新元素";
          ????????root.childNodes[
          1].replaceChild(element,node.childNodes[0]);
          ????????window.alert(node.xml);
          ????
          </script>
          ???
          </body>
          </html>


          上示例用到的XML文件
          <?xml?version="1.0"?>
          <PEOPLE??id="fdsfsd"??ds="sdfsd">
          ????
          <PERSON?PERSONID="E01">
          ????????
          <NAME>Tony?Blair</NAME>
          ????????
          <ADDRESS>10?Downing?Street,?London,?UK</ADDRESS>
          ????????
          <TEL>(061)?98765</TEL><FAX>(061)?98765</FAX>
          ????????
          <EMAIL>blair@everywhere.com</EMAIL>
          ????
          </PERSON>
          ????
          <PERSON?PERSONID="E02">
          ????????
          <NAME>Bill?Clinton</NAME>
          ????????
          <ADDRESS>White?House,?USA</ADDRESS>
          ????????
          <TEL>(001)?6400?98765</TEL><FAX>(001)?6400?98765</FAX>
          ????????
          <EMAIL>bill@everywhere.com</EMAIL>
          ????
          </PERSON>
          ????
          <PERSON?PERSONID="E03">
          ????????
          <NAME>Tom?Cruise</NAME>
          ????????
          <ADDRESS>57?Jumbo?Street,?New?York,?USA</ADDRESS>
          ????????
          <TEL>(001)?4500?67859</TEL><FAX>(001)?4500?67859</FAX>
          ????????
          <EMAIL>cruise@everywhere.com</EMAIL>
          ????
          </PERSON>
          ????
          <PERSON?PERSONID="E04">
          ????????
          <NAME>Linda?Goodman</NAME>
          ????????
          <ADDRESS>78?Crax?Lane,?London,?UK</ADDRESS>
          ????????
          <TEL>(061)?54?56789</TEL><FAX>(061)?54?56789</FAX>
          ????????
          <EMAIL>linda@everywhere.com</EMAIL>
          ????
          </PERSON>
          </PEOPLE>?????

          posted on 2006-07-22 10:46 record java and net 閱讀(4197) 評(píng)論(3)  編輯  收藏 所屬分類: xml and htmlAJAX

          評(píng)論

          # re: DOM對(duì)象簡(jiǎn)單使用 2006-07-22 20:53 TiGERTiAN

          不推薦使用微軟的xmldoc對(duì)象,因?yàn)橹挥性贗E下有用,在獲取了xmlHttp.responseXML之后可以使用document對(duì)象來(lái)調(diào)用整個(gè)文檔,并可以用getElementsByTagName來(lái)調(diào)用節(jié)點(diǎn),再通過(guò)他的一些方法來(lái)調(diào)用所需數(shù)據(jù),這樣可以通用多種瀏覽器不怕兼容性問(wèn)題,至少我寫(xiě)的東西在的ie,firefox,opera下都可以使用,在用方法setAttribute設(shè)置屬性例如colspan的時(shí)候IE是colSpan而其它的瀏覽大小寫(xiě)不礙事,這個(gè)需要你在寫(xiě)js控制格式的時(shí)候注意一下  回復(fù)  更多評(píng)論   

          # re: DOM對(duì)象簡(jiǎn)單使用 2006-07-22 22:04 吳某人-不斷地學(xué)習(xí)

          恩。

          多謝指點(diǎn)。  回復(fù)  更多評(píng)論   

          # re: DOM對(duì)象簡(jiǎn)單使用 2006-08-24 03:08 急救

          請(qǐng)問(wèn)如何通過(guò)dom設(shè)置一個(gè)列的colspan大小啊
          我今天試了好幾次 設(shè)置失敗
          真的急
          哪個(gè)朋友知道了請(qǐng)加196028170 告訴我一下  回復(fù)  更多評(píng)論   

          導(dǎo)航

          常用鏈接

          留言簿(44)

          新聞檔案

          2.動(dòng)態(tài)語(yǔ)言

          3.工具箱

          9.文檔教程

          友情鏈接

          搜索

          最新評(píng)論

          主站蜘蛛池模板: 平和县| 张家口市| 土默特右旗| 阳曲县| 阿瓦提县| 同德县| 东海县| 宝应县| 北川| 巫溪县| 呼图壁县| 巍山| 武清区| 和平区| 临西县| 化隆| 平昌县| 保德县| 河西区| 纳雍县| 凤山县| 潜山县| 平湖市| 交口县| 津市市| 磴口县| 沁阳市| 洪泽县| 阳山县| 乌兰浩特市| 普兰县| 林甸县| 新疆| 建水县| 柳州市| 长宁县| 深州市| 永吉县| 许昌县| 南安市| 清新县|