emu in blogjava

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評論 :: 2 Trackbacks

          ?

          <! DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.0?Transitional//EN" >
          < HTML >
          < HEAD >
          < TITLE > ?使firefox對xml的處理兼容IE的selectSingleNode?selectNodes方法? </ TITLE >
          < META? NAME ="Author" ?CONTENT ="emu" >
          < META? NAME ="Keywords" ?CONTENT ="firefox?IE?selectSingleNode?selectNodes" >
          < META? NAME ="Description" ?CONTENT ="使firefox可以支持selectSingleNode?selectNodes方法" >
          < SCRIPT? LANGUAGE ="JavaScript" >
          <!--
          var ?isIE? = ? !! document.all;

          function ?parseXML(st){
          ????
          if (isIE){
          ????????
          var ?result? = ? new ?ActiveXObject( " microsoft.XMLDOM " );
          ????????result.loadXML(st);
          ????}
          else {
          ????????
          var ?parser? = ? new ?DOMParser();
          ????????
          var ?result? = ?parser.parseFromString(st,? " text/xml " );
          ????}
          ????
          return ?result;
          }

          if ( ! isIE){
          ????
          var ?ex;
          ????XMLDocument.prototype.__proto__.__defineGetter__(
          " xml " ,? function (){
          ????????
          try {
          ????????????
          return ? new ?XMLSerializer().serializeToString( this );
          ????????}
          catch (ex){
          ????????????
          var ?d? = ?document.createElement( " div " );
          ????????????d.appendChild(
          this .cloneNode( true ));
          ????????????
          return ?d.innerHTML;
          ????????}
          ????});
          ????Element.prototype.__proto__.__defineGetter__(
          " xml " ,? function (){
          ????????
          try {
          ????????????
          return ? new ?XMLSerializer().serializeToString( this );
          ????????}
          catch (ex){
          ????????????
          var ?d? = ?document.createElement( " div " );
          ????????????d.appendChild(
          this .cloneNode( true ));
          ????????????
          return ?d.innerHTML;
          ????????}
          ????});
          ????XMLDocument.prototype.__proto__.__defineGetter__(
          " text " ,? function (){
          ????????
          return ? this .firstChild.textContent
          ????});
          ????Element.prototype.__proto__.__defineGetter__(
          " text " ,? function (){
          ????????
          return ? this .textContent
          ????});




          ????XMLDocument.prototype.selectSingleNode
          = Element.prototype.selectSingleNode = function (xpath){
          ????????
          var ?x = this .selectNodes(xpath)
          ????????
          if ( ! x? || ?x.length < 1 ) return ? null ;
          ????????
          return ?x[ 0 ];
          ????}
          ????XMLDocument.prototype.selectNodes
          = Element.prototype.selectNodes = function (xpath){
          ????????
          var ?xpe? = ? new ?XPathEvaluator();
          ????????
          var ?nsResolver? = ?xpe.createNSResolver( this .ownerDocument? == ? null ? ?
          ????????????
          this .documentElement?:? this .ownerDocument.documentElement);
          ????????
          var ?result? = ?xpe.evaluate(xpath,? this ,?nsResolver,? 0 ,? null );
          ????????
          var ?found? = ?[];
          ????????
          var ?res;
          ????????
          while ?(res? = ?result.iterateNext())
          ????????????found.push(res);
          ????????
          return ?found;
          ????}
          }

          var ?x? = ?parseXML( " <people>??<person?first-name=\ " eric\ " ?middle-initial=\ " H\ " ?last-name=\ " jung\ " >????<address?street=\ " 321 ?south?st\ " ?city=\ " denver\ " ?state=\ " co\ " ?country=\ " usa\ " />????<address?street=\ " 123 ?main?st\ " ?city=\ " arlington\ " ?state=\ " ma\ " ?country=\ " usa\ " />??</person>??<person?first-name=\ " jed\ " ?last-name=\ " brown\ " >????<address?street=\ " 321 ?north?st\ " ?city=\ " atlanta\ " ?state=\ " ga\ " ?country=\ " usa\ " />????<address?street=\ " 123 ?west?st\ " ?city=\ " seattle\ " ?state=\ " wa\ " ?country=\ " usa\ " />????<address?street=\ " 321 ?south?avenue\ " ?city=\ " denver\ " ?state=\ " co\ " ?country=\ " usa\ " />??</person></people> " );

          alert(
          " 搜索所有人的姓氏(last-name) " )
          var ?results? = ?x.selectNodes( " //person/@last-name " );
          for ?( var ?i = 0 ;?i < results.length;i ++ )
          ??alert(
          " Person?# " ? + ?i? + ? " ?has?the?last?name? " ? + ?results[i].nodeValue);

          alert(
          " 搜索第二個人 " );
          // ?IE是以0為下標基數的,而不是1
          if ( ! document.all)
          ????results?
          = ?x.selectSingleNode( " /people/person[2] " );
          else
          ????results?
          = ?x.selectSingleNode( " /people/person[1] " );
          alert(results.xml)

          alert(
          " 獲得住址在donver街上的人 " );
          results?
          = ?x.selectNodes( " //person[address/@city='denver'] " );
          for ?( var ?i = 0 ;?i < results.length;i ++ )alert(results[i].xml)

          if ( ! document.all){
          ????
          // ?獲得所有街名中帶south的地址
          ????results? = ?x.selectNodes( " //address[contains(@street,?'south')] " );
          ????alert(results[
          0 ].xml);
          }
          else {
          ????alert(
          " IE不支持?//address[contains(@street,?'south')]?這種查詢方式 " )
          }
          // -->
          </ SCRIPT >
          </ HEAD >

          < BODY >

          </ BODY >
          </ HTML >

          例子引自 http://kb.mozillazine.org/XPath?。從例子可以看到,IE對xpath的支持還是有限度的。
          posted on 2006-02-27 17:18 emu 閱讀(2328) 評論(0)  編輯  收藏 所屬分類: DHTML和JAVASCRIPT 技術
          主站蜘蛛池模板: 东阳市| 清丰县| 丰都县| 阿克陶县| 东乡族自治县| 中江县| 台安县| 亚东县| 莒南县| 青州市| 尼木县| 潞西市| 如皋市| 团风县| 台湾省| 苏尼特右旗| 普定县| 米易县| 阳泉市| 两当县| 阳高县| 奇台县| 武安市| 昌吉市| 玛沁县| 青川县| 电白县| 丰镇市| 大同县| 滕州市| 资溪县| 松潘县| 宜章县| 图片| 防城港市| 鹿泉市| 洛宁县| 临汾市| 兴宁市| 盐津县| 凤城市|