Página 1
Índice
See this article in english  Ver este artículo en español 
Página 2
Evaluar expresiones XPath en cualquier navegador

Obtener un árbol XML del documento HTML actual

Alexander Hristov

Esta sencilla función proporciona un árbol XML (conforme a DOM) del documento HTML actual. Únicamente es necesaria para Internet Explorer, ya que en Mozilla y similares los propios nodos HTML son a la vez nodos DOM.

doc2dom.js
 
function document2DOM() {
  var root = new ActiveXObject("MSXML.DOMDocument");
  root.async = false;
  root.resolveExternals = false;
  loadNode(root,root,document);
  return root;
}

function loadNode(root,parentNode,htmlNode) {
  switch (htmlNode.nodeType) {
    // Comment node
    case 8 : 
      parentNode.appendChild( root.createComment( htmlNode.nodeValue ) );
      return;
      
    // CDATA section
    case 4:
      parentNode.appendChild( root.createCDATASection( htmlNode.nodeValue ) );
      return;
      
    // Text node  
    case 3 :
      parentNode.appendChild( root.createTextNode( htmlNode.nodeValue) );
      return;
      
    // Document Node
    case 9 :
      var children = htmlNode.childNodes;
      for (var i = 0; i < children.length; i++) {
        loadNode(root,root,children[i]);
      }
      return;
      
    // Element node  
    case 1 :
      var element = root.createElement( htmlNode.nodeName ) 
      parentNode.appendChild(element);
      
      // Set all attributes
      for (var i = 0; i < htmlNode.attributes.length; i++) {
        var attr = htmlNode.attributes[i];
        if (attr.nodeValue && attr.specified) {
          var attrNode = root.createAttribute(attr.nodeName);
          attrNode.value = attr.nodeValue;
          element.setAttributeNode(attrNode);
        }
      }
      
      // Now process the children
      var children = htmlNode.childNodes;
      for (var i = 0; i < children.length; i++) {
        loadNode(root,element,children[i]);
      }
      return;
  }
}

function test() {
  var result = document2DOM();
  alert(result.xml)
}

 

Pulsa   para probar la función "en vivo". (Sólo para Internet Explorer)



Código Fuente



 

Comentarios

24/02/2008 a las 03:45 Enviado por Romita
Very good tutorial, would u help me with some doubts?

 

Añadir Comentario

Nombre (opcional)
EMail (opcional, no se muestra)

Texto