Convertire HTML in XHTML

Dato un elemento DOM di un documento HTML, restituisce un oggetto XML rappresentante XHTML ben-formato. (Modificarlo in modo che dia anche in uscita un elemento DOM dovrebbe essere banale.)

Esempio

  var node = document.body;
  node.innerHTML; // -> '<BODY><IMG src="file.jpg"><P>hello,<BR>world</P></BODY>'
  conv.htmlDOMToXHTML(node);
    // -> <body xmlns="http://www.w3.org/1999/xhtml">
    //    <img src="file.jpg"/><p>hello,<br/>world</p></body>

Codice

  function htmlDOMToXHTML = function(node) {
      var self = arguments.callee;
      
      switch(node.nodeType) {
      case Node.ELEMENT_NODE:
          var element = <{node.nodeName.toLowerCase()} xmlns={ns_xhtml}/>;
  
          for(var attr = node.attributes[0], i=0; attr = node.attributes[i]; i++)
              element['@' + attr.name] = attr.value;
  
          var child = node.firstChild;
          while(child) {
              element.appendChild(self(child));
              child = child.nextSibling;
          }
  
          return element;
          break;
      case Node.TEXT_NODE:
          return node.textContent;
          break;
      default:
          throw new Error('Unexpected. (' + node.nodeType + ')');
      }
      return undefined;
  };

Info

Syndicate content