XML bearbeiten mit JavaScript

Hallo,

ist es möglich eine XML-Datei mittels JavaScript zu bearbeiten?
Wenn ja, wie?

Meine XML sieht folgendermaßen aus:

<?xml version="1.0"?>

Ich möchte das Attribut „name“ von einem file x ändern.

z.B. als Pseudo-Funktion dann so in etwa:

function(ItemIndexNummer)
{
name[ItemIndexNummer] = „anders“;
}

In PHP habe ich eine Lösung, doch ich brauchs in JS.

Ich hoffe ihr könnt mir helfen… Danke!

Nicht direkt

Hallo Daniel,

also wenn Du Dateien ändern möchtest, dann kannst Du das mit Javascript nur indirekt. Du solltest eine PHP-Datei schreiben, die Parameter empfangen kann und von Javascript aus aufgerufen wird. Außerdem ist eien Einarbeitung in das Thema Ajax empfohlen: http://de.wikipedia.org/wiki/Ajax_%28Programmierung%29

Schöne Grüße,

Mohamed.

Hallo Daniel,

Du solltest eine PHP-Datei schreiben,
die Parameter empfangen kann und von Javascript aus aufgerufen
wird.

Als z.B. xx.php mit dem Script zur Bearbeitung der xml und dann in Java mit load(xx.php) – geht das?

Du solltest eine PHP-Datei schreiben,
die Parameter empfangen kann und von Javascript aus aufgerufen
wird.

Als z.B. xx.php mit dem Script zur Bearbeitung der xml und
dann in Java mit load(xx.php) – geht das?

Die Bearbeitung der XML-Daten kann auch auf Javascript-Ebene geschehen. In Javascript kann man auf einer XML-Struktur ungefähr so „herumsurfen“ wie im HTML-Dokument. Das Ajax-Objekt bietet für eingelesene Dateien extra die Eigenschaft „responseXML“ an. Darauf kannst Du dann ungefähr so zugreifen:

var daten = meinAjaxObjekt.responseXML;
alert(daten.getElementsByTagName("geburtstag")[0]);

Aber wie bereits angedeutet, um Ajax-Literatur wirst Du hierbei nicht ganz herumkommen. Folgendes Buch ist nicht nur für Ajax-, sondern auch Javascript-Anfänger:

„Jetzt lerne ich Ajax“
ISBN 978-3-8272-4225-9 Buch anschauen
Verlag: Markt & Technik
Autor: Ralph Steyer

Schöne Grüße,

Mohamed.

Kannst du mir einen Lösungsansatz geben, wie ich auf ein bestimmtes Element, bzw. das Attribut „name“ zugreifen kann und dieses dann ändern?
Ich finde im Netz 1000e Möglichkeiten, um XML auszulesen oder auch neue Werte hinzuzufügen, aber nichts um bereits vorhandene Daten zu bearbeiten…

Habe jetzt folgendes zusammen gebastelt:

xmlDoc=loadXMLDoc(path + „files.xml“);
xmlDoc.getElementsByTagName(‚file‘).item(Index).setAttribute(„name“,newName);
xmlDoc.save(path + „files.xml“);

Bekomme aber beim speichern den Fehler „Erlaubnis verweigert“…
An was liegt das? Habe es im IE7 und Mozilla 2.0.0.13 probiert.

Ich habe mich bisher nicht in großem Maße mit XML-Dateien speichern per Javascript beschäftigt, aber die Routine zum Abspeichern musst Du z.B. in PHP schreiben, nicht in Javascript. Diese PHP-Datei müsste etwa so angesprochen werden:

var requestObject = getRequestObject();
fileSystemReady = 0;
requestObject.onreadystatechange = function(){statehandler(requestObject)};
try {
 requestObject.open("POST","meinePhpDatei.php?"
 +meinXMLQuelltextUndSonstigeParameter);
 requestObject.send(null);
} catch(e) {}

function getRequestObject() {
 var ro;
 // Mozilla-kompatibel?
 if (window.XMLHttpRequest){
 // Ja, ein Mozilla-kompatibler Browser
 try {
 // Objekt ableiten
 ro = new XMLHttpRequest();
 } catch(e) {
 // Objekt konnte nicht abgeleitet werden
 ro = null;
 }
 } else {
 // Teil fuer den IE
 try {
 // Neue Methode versuchen
 ro = new ActiveXObject("Msxml2.Xmlhttp");
 } catch(e) {
 try {
 // Wenn die neue nicht klappt,
 //dann vielleicht die alte?
 ro = new ActiveXObject("Microsoft.XMLHTTP");
 } catch (e) {
 // ActiveX ausgeschaltet oder kein JS aktiviert
 ro = null;
 }
 }
 }
 // Haben wir ein Objekt oder nicht?
 if (ro == null) {
 // Fehlermeldung
 alert ('Ihr Browser unterstützt leider kein AJAX');
 }
 return ro;
}

Ok vielen Dank zunächst!

Ich bekomme allerdings bei folgender Zeile bei Zeichen 48 einen Fehler:

requestObject.onreadystatechange =
function(){statehandler(requestObject)};

Und zwar: Objekt erwartet.

An was liegt das?

Hoppla, es fehlte noch eine Funktion:

function statehandler(requestObject){
 if(requestObject.readyState == 4){
 response = requestObject.responseText;
 xmlResponse = requestObject.responseXML;
 }
}

Schöne Grüße,

Mohamed.