2 Stimmen

Entfernen eines XML-Knotens durch Index mit jquery & zurück in die Datei schreiben

Ich habe die folgende Xml-Struktur:

    <?xml version="1.0" encoding="utf-8" ?>
    <nws>
      <url>http://cpa.hypotheses.org/feed</url>
      <url>http://news.ycombinator.com/rss</url>
      <url>http://rss.slashdot.org/Slashdot/slashdot</url>
      <url>http://feeds.feedburner.com/hackaday/LgoM</url>
    </nws>

...und so weiter.

Ich würde gerne das n-te Element entfernen. Das war's. Alle Beispiele, die ich gesehen habe, beinhalten die Suche nach dem Inhalt des Knotens mit xmatch, und ich kann ihn nicht durchsuchen, weil 1. es eine komplizierte Zeichenfolge ist und 2. ich die Zeichenfolge, die ich löschen möchte, wirklich nicht kenne, aber ich kenne den Index.

Ich kann alle Url-Knoten wie folgt lesen:

$.ajax({
type: 'GET',
url: 'conf.xml',
dataType: 'xml',
success: parseXml
});

$(xml).find("url").each(function() {
    $("#output").append($(this).text());
    // $("#output").append(": " + $(this).find("Title").text() + "<br />");
});

Aber ich kann anscheinend nicht sagen: "Nur die zweite ausgeben", geschweige denn sie entfernen.

Noch eine Sache. Ich verstehe, dass ich das XML-DOM nach der Manipulation wieder in die Datei zurückschreiben muss, indem ich

echo $urlFile->asXML('myfile.xml');

Aber der Prozess ist irgendwie unscharf (zu welcher Klasse gehört diese "asXML"-Methode? Ist sie überhaupt in diesem Kontext verfügbar? Muss ich eine andere Bibliothek als nur jquery.js laden ?) Ich bin irgendwo in dem Prozess verloren ; Kann jemand bitte einen Überblick über den gesamten Prozess posten ? dh

  1. die Datei lesen
  2. finden, sagen wir den zweiten Knoten durch den Namen des Knotens ( no seinen Inhalt oder sein Attribut)
  3. löschen
  4. die geänderte Darstellung des DOM in die Datei zurückschreiben

(idealerweise möchte ich vor dem Zurückschreiben in die Datei einige Prüfungen durchführen können, wie z. B. leere Zeilen usw.)

Auch wenn das Beispiel nicht funktional ist, möchte ich das Konzept einfach verstehen.

0voto

yPhil Punkte 7419

OK, ich habe die Hälfte des Problems gelöst: Ich kann jetzt den n-ten Knoten mit Hilfe seines Indexes löschen, wie folgt:

$(document).ready(function() {

    $.ajax({
    type: 'GET',
    url: 'conf.xml',
    dataType: 'xml',
    success: parseXml
    });

    function parseXml(xml) {
    $(xml).find("url").eq(3).remove(); // <= The answer I was looking for

    $(xml).find("url").each(function(index) {
        $("#output").append($(this).text());
    });
    }
});

Dies gibt meine Liste ohne das 3. Element aus. (aber nicht als DOM-Objekt). Trotzdem, Wohoo!

Nun, wie kann ich es zurück (als DOM-Objekt) in einer php var, um es zurück in die Datei zu schreiben? Oder vielleicht mit Ajax? Ich kann eine Datei von ajax lesen, aber nicht in sie schreiben, ich weiß nicht, wie man das macht, hat das schon mal jemand gemacht, der mir die richtige Richtung zeigen könnte? (Speichern von JS-verarbeitetem XML in einer aktuell Datei ?)

Mit freundlichen Grüßen, -ph

0 Stimmen

OK Ich ließ jquery und machte alles mit simplexml (Code auf Anfrage erhältlich); danke an alle!

0 Stimmen

Und jetzt versuche ich herauszufinden, warum ich firstChild nicht auf einem PHP DOMDocument Objekt aufrufen kann (alle anderen Methoden scheinen zu funktionieren, aber weder insertBedore noch firstChild funktionieren, sie scheitern beide stumm - (WFT ? createElement und appendChild funktionieren). Ich würde auch gerne wissen, wo jeder DOM-Fehler zu fangen (ich kann nichts in Firebug, in jeder Registerkarte überhaupt sehen) Aber ich vermute, dass Sie Jungs nicht wissen, dass entweder.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X