[Sie-announce] SIEコード [1809] importNodeメソッドの修正

Zurück zum Archiv-Index

svnno****@sourc***** svnno****@sourc*****
2010年 4月 30日 (金) 23:33:17 JST


Revision: 1809
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1809
Author:   dhrname
Date:     2010-04-30 23:33:16 +0900 (Fri, 30 Apr 2010)

Log Message:
-----------
importNodeメソッドの修正

Modified Paths:
--------------
    branches/ufltima/core.js

Modified: branches/ufltima/core.js
===================================================================
--- branches/ufltima/core.js	2010-04-29 14:43:34 UTC (rev 1808)
+++ branches/ufltima/core.js	2010-04-30 14:33:16 UTC (rev 1809)
@@ -842,73 +842,62 @@
  *自身のドキュメントノードに、他のドキュメントノードから作られたノードを取り込みたいときに用いる
  */
 /*Node*/               Document.prototype.importNode = function( /*Node*/ importedNode, /*boolean*/ deep) {
-  var s;
+  var s, imn = importedNode.nodeType;
   /*以下の処理は引き渡されたimportedNodeがMSXMLによって解析された
    *データであることを前提にしている
    */
-  switch (importedNode.nodeType) {
-    case Node.ELEMENT_NODE:
-      s = this.createElementNS(importedNode.namespaceURI, importedNode.nodeName);
-      var attr = importedNode.attributes, att;
-      for (var i=0,atli=attr.length;i<atli;++i) { //NamedNodeMapを検索する
-        att = this.importNode(attr[i], false);
-        s.setAttributeNodeNS(att);
+  if (imn === Node.ELEMENT_NODE) {
+    s = this.createElementNS(importedNode.namespaceURI, importedNode.nodeName);
+    var attr = importedNode.attributes, att;
+    for (var i=0,atli=attr.length;i<atli;++i) { //NamedNodeMapを検索する
+      att = this.importNode(attr[i], false);
+      s.setAttributeNodeNS(att);
+    }
+    if (deep) {
+      var fi = importedNode.firstChild, n;
+      while (fi) { //子ノードを検索して、子供がいれば、importNodeメソッドを再帰的に実行する
+        n = this.importNode(fi, true);
+        s.appendChild(n);
+        fi = fi.nextSibling;
       }
-      if (deep) {
-        var fi = importedNode.firstChild, n;
-        while (fi) { //子ノードを検索して、子供がいれば、importNodeメソッドを再帰的に実行する
-          n = this.importNode(fi, true);
-          s.appendChild(n);
-          fi = fi.nextSibling;
-        }
+    }
+    i = attr = att = atli = n = ch = chli = null;
+  } else if(imn === Node.ATTRIBUTE_NODE) {
+    var uri = importedNode.namespaceURI;
+    uri = (uri === "") ? null : uri; //空文字列はnullとして扱うようにする(MSXMLがから文字列を返す時の対策)
+    s = this.createAttributeNS(uri, importedNode.nodeName);
+    s.nodeValue = importedNode.nodeValue;
+  } else if(imn === Node.TEXT_NODE) {
+    s = this.createTextNode(importedNode.data);
+  } else if(imn === Node.COMMENT_NODE) {
+    s = this.createComment(importedNode.data);
+  } else if(imn === Node.DOCUMENT_FRAGMENT_NODE) {
+    s = this.createDocumentFragment();
+    if (deep) {
+      var ch = importedNode.childNodes, n;
+      for (var i=0,chli=ch.length;i<chli;i++) { //子ノードを検索して、子供がいれば、importNodeメソッドを再帰的に実行する
+        n = this.importNode(ch[i], true);
+        s.appendChild(n);
       }
-      i = attr = att = atli = n = ch = chli = null;
-    break;
-    case Node.ATTRIBUTE_NODE:
-      var uri = importedNode.namespaceURI;
-      uri = (uri === "") ? null : uri; //空文字列はnullとして扱うようにする(MSXMLがから文字列を返す時の対策)
-      s = this.createAttributeNS(uri, importedNode.nodeName);
-      s.nodeValue = importedNode.nodeValue;
-    break;
-    case Node.TEXT_NODE:
-      s = this.createTextNode(importedNode.data);
-    case Node.COMMENT_NODE:
-      s = this.createComment(importedNode.data);
-    break;
-    case Node.DOCUMENT_FRAGMENT_NODE:
-      s = this.createDocumentFragment();
-      if (deep) {
-        var ch = importedNode.childNodes, n;
-        for (var i=0,chli=ch.length;i<chli;i++) { //子ノードを検索して、子供がいれば、importNodeメソッドを再帰的に実行する
-          n = this.importNode(ch[i], true);
-          s.appendChild(n);
-        }
-      }
-      i = n = ch = chli = null;
-    break;
-    case Node.CDATA_SECTION_NODE:
-      s = this.createCDATASection();
-    break;
-    case Node.ENTITY_REFERENCE_NODE:
-      s = this.createEntityReference(importedNode.nodeName);
-    break;
-    case Node.ENTITY_NODE:
-      s = new Entity();
-      s.publicId = importedNode.publicId;
-      s.systemId = importedNode.systemId;
-      s.notationName = importedNode.notationName;
-    break;
-    case Node.PROCESSING_INSTRUCTION_NODE:
-      s = this.createProcessingInstruction(importedNode.nodeName, importedNode.nodeValue)
-    break;
-    case Node.NOTATION_NODE:
-      s = new Notation();
-      s.publicId = importedNode.publicId;
-      s.systemId = importedNode.systemId;
-      break;
-    default:
-      throw (new DOMException(DOMException.NOT_SUPPORTED_ERR));
-    break;
+    }
+    i = n = ch = chli = null;
+  } else if(imn === Node.CDATA_SECTION_NODE) {
+    s = this.createCDATASection();
+  } else if(imn === Node.ENTITY_REFERENCE_NODE) {
+    s = this.createEntityReference(importedNode.nodeName);
+  } else if(imn === Node.ENTITY_NODE) {
+    s = new Entity();
+    s.publicId = importedNode.publicId;
+    s.systemId = importedNode.systemId;
+    s.notationName = importedNode.notationName;
+  } else if(imn === Node.PROCESSING_INSTRUCTION_NODE ) {
+    s = this.createProcessingInstruction(importedNode.nodeName, importedNode.nodeValue)
+  } else if(imn === Node.NOTATION_NODE) {
+    s = new Notation();
+    s.publicId = importedNode.publicId;
+    s.systemId = importedNode.systemId;
+  } else {
+    throw (new DOMException(DOMException.NOT_SUPPORTED_ERR));
   }
   importedNode = deep = null;
   return s;




Sie-announce メーリングリストの案内
Zurück zum Archiv-Index