molily: Dokumentstruktur einlesen und als HTML-Quelltext ausgeben

Beitrag lesen

Hallo nochmal,

Man könnte das Skript umschreiben, sodass es alle Elemente und Kindknoten einliest und als HTML-Code ausgibt.

...genau das habe ich mal gemacht, und heraus kam das:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<!-- (K) ALL RIGHTS REVERSED - Reprint what you like -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>JavaScript/DOM: Rekursive Auflistung aller Kindknoten</title>
<script type="text/javascript">
//<![CDATA[
// by Mathias Schaefer (molily@gmx.de), licensed under
// GNU General Public License (http://www.gnu.org/copyleft/gpl.txt)

var ausgabe='';

function liste_unterknoten (knoten) {
 if (knoten.nodeName=='#text') {
  ausgabe+=knoten.nodeValue;
 } else {
  if (knoten.nodeName=='#comment') {
   ausgabe+='<!--'+knoten.nodeValue+'-->';
  } else {
   ausgabe+='<'+knoten.nodeName;
   if (knoten.attributes.length)
    for (k=0; k<knoten.attributes.length; k++)
     ausgabe+=' '+knoten.attributes[k].nodeName+'="'+knoten.attributes[k].nodeValue+'"';
   if (knoten.hasChildNodes()) {
    ausgabe+='>';
    for (var i=0; i<knoten.childNodes.length; i++) {
     knotenneu=knoten.childNodes[i];
     liste_unterknoten(knotenneu); // Rekursion
    }
    ausgabe+='</'+knoten.nodeName+'>';
   } else {
    ausgabe+=' />';
   }
  }
 }
}
//]]>
</script>
</head>
<body>

<!-- Beispieldokument (dieser Kommentar ist auch ein Unterknoten) -->

<h1>JavaScript/<abbr title="Document Object Model">DOM</abbr>: Rekursive Auflistung aller Kindknoten</h1>

<h2 title="Testattributwert">Testüberschrift</h2>

<script type="text/javascript">
//<![CDATA[
liste_unterknoten(document.getElementsByTagName('html')[0]);
document.write('<pre>'+ausgabe+'</pre>');
//]]>
</script>

</body>
</html>

Der Quellcode wird recht genau wiedergegeben, nur die Zeilenumbrüche werden verfälscht, mag auch an der Datei liegen. Getestet mit Mozilla 1.1.
Kommentare erwünscht. :)

Mathias