Eine Xpathlösung als Javascript. XSLT habe ich jetzt gerade keine Lust, kommt aber vielleicht noch ;-)
XML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script language="JavaScript1.2">
function doTest(filename) {
var treffer = getXPathResult(getDocument(), "//archiv[Item='" + filename + "']");
var divTag = document.getElementById("myTable");
var tableTag = document.createElement("table");
tableTag.setAttribute("border","1");
divTag.appendChild(tableTag);
var tbodyTag = document.createElement("tbody");
tableTag.appendChild(tbodyTag);
for (var i = 0; i < treffer.length; i++) {
var trTag = document.createElement("tr");
tbodyTag.appendChild(trTag);
var tdTag = document.createElement("td");
trTag.appendChild(tdTag);
var textNode = document.createTextNode(treffer[i].getAttribute("name"));
tdTag.appendChild(textNode);
var tdTag = document.createElement("td");
trTag.appendChild(tdTag);
var textNode = document.createTextNode(filename);
tdTag.appendChild(textNode);
}
}
function getXPathResult(xmlKnoten, xPathAusdruck) {
// Menge aller gefundenen Konten
var ergebnisse = [];
// Mit IE ermitteln
if (window.ActiveXObject) {
ergebnisse = xmlKnoten.documentElement.selectNodes(xPathAusdruck);
// Mit Mozilla ermitteln
} else if (window.XPathEvaluator) {
var ev = new XPathEvaluator();
var iterator = ev.evaluate( xPathAusdruck, xmlKnoten.documentElement, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);
var knoten;
while (knoten = iterator.iterateNext()) {
ergebnisse[ergebnisse.length] = knoten;
}
}
return ergebnisse;
}
function getDocument() {
// Besser mit Ajax laden, dies ist nur eine simple Lösung
var xmlString = '<?xml version="1.0" encoding="UTF-8"?><root><Datei><archiv name="b_20080704102628_backup"><Item>Text1 (1).bak</Item><Item>Text1 (10).txt</Item><Item>Text1 (11).txt</Item><Item>Text1 (12).alf</Item><Item>Text1 (3).dmp</Item><Item>Text1 (4).sav</Item><Item>Text1 (5).txt</Item><Item>Text1 (6).txt</Item><Item>Text1 (7).txt</Item><Item>Text1 (8).txt</Item><Item>Text1 (9).txt</Item><Item>text2.cdc</Item></archiv></Datei><Datei><archiv name="b_20080704102704_backup"><Item>Text1 (1).bak</Item><Item>Text1 (10).txt</Item><Item>Text1 (11).txt</Item><Item>Text1 (12).alf</Item><Item>Text1 (3).dmp</Item><Item>Text1 (4).sav</Item><Item>Text1 (5).txt</Item><Item>Text1 (6).txt</Item><Item>Text1 (7).txt</Item><Item>Text1 (8).txt</Item><Item>Text1 (9).txt</Item></archiv></Datei><Datei><archiv name="b_20080704105146_backup"><Item>Text1 (1).bak</Item><Item>Text1 (10).txt</Item><Item>Text1 (11).txt</Item><Item>Text1 (12).alf</Item><Item>Text1 (3).dmp</Item><Item>Text1 (4).sav</Item><Item>Text1 (5).txt</Item><Item>Text1 (6).txt</Item><Item>Text1 (7).txt</Item><Item>Text1 (8).txt</Item><Item>Text1 (9).txt</Item><Item>text2.cdc</Item></archiv></Datei></root>';
var xmlDocument;
// Browserabhängigen Domparser wählen
// IE
if (window.ActiveXObject) {
xmlDocument = new ActiveXObject("MSXML2.DomDocument.6.0");
xmlDocument.loadXML(xmlString);
// Mozilla
} else if (document.implementation) {
xmlDocument = (new DOMParser()).parseFromString(xmlString, "text/xml");
}
// gefüllten XMLBaum zurückgeben
return xmlDocument;
}
</script>
</head>
<body onload="doTest('text2.cdc');">
<div id="myTable"></div>
</body>
</html>
Zuletzt bearbeitet von einem Moderator: