php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > XML
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


XML Hier passt alles rein, was das Thema XML (XSLT, JSON etc...) betrifft, auch in Verbindung mit PHP

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 05-07-2005, 13:36
reallife
 Registrierter Benutzer
Links : Onlinestatus : reallife ist offline
Registriert seit: May 2005
Ort: Weit weit weg
Beiträge: 410
reallife ist zur Zeit noch ein unbeschriebenes Blatt
Standard XML Knoten löschen

Hallo,

vielleicht kann mir hier jemand helfen.
Und zwar habe ich ein XML-Dokument mit der folgenden Struktur:

PHP-Code:
<?xml version="1.0"?>
<eintraege>
    <eintrag>
        <ID>1</ID>
        <Name>Firma 1</Name>
        <www>URL1</www>
    </eintrag>
    <eintrag>
        <ID>2</ID>
        <Name>Firma 2</Name>
        <www>URL2</www>
    </eintrag>
    <eintrag>
        <ID>3</ID>
        <Name>Firma 3</Name>
        <www>URL3</www>
    </eintrag>
</eintraege>
Wie muss ich vorgehen, um z.B. den Eintrag mit der ID 2 zu löschen? Ich habe es schon mit DOM und removeChild probiert, aber irgendwie krieg ich nix hin.
Es ist mir relativ wurscht, ob ich das mit DOM, simpleXML oder irgendwas anderem geregelt krieg, hauptsache es läuft .

Also, ich wäre euch echt dankbar, wenn ihr mir helfen könnt.

Besten Dank im Vorraus!

Geändert von reallife (05-07-2005 um 15:21 Uhr)
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 05-07-2005, 15:21
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Zeig doch mal den Code, dann kann man dir vllt. auch sagen, warum remove_child() nicht klappt.
Mit Zitat antworten
  #3 (permalink)  
Alt 05-07-2005, 15:35
reallife
 Registrierter Benutzer
Links : Onlinestatus : reallife ist offline
Registriert seit: May 2005
Ort: Weit weit weg
Beiträge: 410
reallife ist zur Zeit noch ein unbeschriebenes Blatt
Standard

danke erstmal für deine Antwort.

Das Problem ist, dass das bei mir alles etwas komplizierter ist und in ner Funktion läuft. Die Struktur der XML ist auch nur vom Prinzip her so wie die obere. Aber dennoch, ich poste mal die Funktion:

PHP-Code:
function Delete($katID$ID)
{
    
$fileName "ref_kat".$katID.".xml";
    
$filePath "../Flash/data/";
    
$file $filePath.$fileName;

    
$doc DOMDocument::load($file);
    
$xp = new domxpath($doc);
    
    
$elements $doc->getElementsByTagName("eintrag"); 
    
$element $elements->item(0);
    
    
$children $doc->documentElement->childNodes->item($ID);
    
$child $element->removeChild($children);

                
    
$doc->save($file);

und hier die wirkliche XML-Struktur:

PHP-Code:
<?xml version="1.0"?>
<referenzen>
    <eintrag>
        <ID>1</ID>
        <Firmenname>Firmenname1</Firmenname>
    </eintrag>
        <eintrag>
        <ID>2</ID>
        <Firmenname>Firmenname2</Firmenname>
    </eintrag>
        <eintrag>
        <ID>3</ID>
        <Firmenname>Firmenname3</Firmenname>
    </eintrag>
</referenzen>
Ich hoffe, du kannst damit was anfangen.
Ich habe leider nicht wirklich viel Ahnung von PHP in Verbindung mit XML.
Mit Zitat antworten
  #4 (permalink)  
Alt 05-07-2005, 16:19
Benutzerbild von Nezzar Nezzar
 wannabe batard
Links : Onlinestatus : Nezzar ist offline
Registriert seit: Mar 2002
Beiträge: 477
Nezzar ist zur Zeit noch ein unbeschriebenes Blatt
Nezzar eine Nachricht über ICQ schicken
Standard

Folgendes sollte funktionieren:
PHP-Code:
$doc DOMDocument::load($file);
$xp = new DOMXPath($doc);

$nodeList $xp->query(sprintf('eintrag[ID = "%s"]'$ID));//DOMXPath::query() liefert eine DOMNodeList zurück

$nodeList->item(0)->parentElement->removeChild($nodeList); 
Falls die XPath-Query mehr als einen Knoten liefern sollte, kann man die Liste ganz bequem mit einer for-Schleife und der Propery DOMNodeList::length durchlaufen und so alle betreffenden Knoten löschen.

Siehe auch: http://de3.php.net/manual/en/functio...path-query.php
__________________
"Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender
Mit Zitat antworten
  #5 (permalink)  
Alt 05-07-2005, 16:21
reallife
 Registrierter Benutzer
Links : Onlinestatus : reallife ist offline
Registriert seit: May 2005
Ort: Weit weit weg
Beiträge: 410
reallife ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hey,

vielen Dank auch dir für deine Hilfe!

Ich werds gleich mal ausprobieren.
Mit Zitat antworten
  #6 (permalink)  
Alt 05-07-2005, 16:24
reallife
 Registrierter Benutzer
Links : Onlinestatus : reallife ist offline
Registriert seit: May 2005
Ort: Weit weit weg
Beiträge: 410
reallife ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hm,
habs grade mal ausprobiert und bekam diese Fehlermeldung:

PHP-Code:
Fatal errorCall to a member function removeChild() on a non-object in ...functions.php on line 265 
Kannst du mir nochmal helfen, das zu beheben?
Oder hast du auch keine Idee, woran das liegt?

Gruß
Mit Zitat antworten
  #7 (permalink)  
Alt 05-07-2005, 18:17
Benutzerbild von Nezzar Nezzar
 wannabe batard
Links : Onlinestatus : Nezzar ist offline
Registriert seit: Mar 2002
Beiträge: 477
Nezzar ist zur Zeit noch ein unbeschriebenes Blatt
Nezzar eine Nachricht über ICQ schicken
Standard

Ach ja, kleiner Fehler. Es muss nicht parentElement sonder parentNode heißen (was man allerdings auch mit ein wenig Recherche auf php.net/dom hätte herausfinden können).

Edit:
Da war noch ein Fehler drin. Folgender Code ist richtig:
PHP-Code:
$doc DOMDocument::load($file);
$xp = new DOMXPath($doc);

$nodeList $xp->query(sprintf('eintrag[ID = "%s"]'$ID));//DOMXPath::query() liefert eine DOMNodeList zurück

$nodeList->item(0)->parentNode->removeChild($nodeList->item(0)); 
__________________
"Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

Geändert von Nezzar (05-07-2005 um 18:19 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

Microweber CMS

Open source, drag and drop website builder

13.01.2020 Berni | Kategorie: HTML5/ EDITOR
PhoneGap Apps mit JS, CSS3 und HTML5 erstellen ansehen PhoneGap Apps mit JS, CSS3 und HTML5 erstellen

PhoneGap, Framework zur Erstellung hybrider Applikationen für mobile Endgeräte.

13.01.2020 Berni | Kategorie: App-Entwicklung
Bo)Tickets

Bo)Tickets bietet Ihnen eine Schnittstelle für Kundenanfragen an. In dem Script definieren Sie Supportbereiche, also zum Beispiel „Technik, Buchhaltung, Support“. Ihre Kunden können dann über ein Formular eine Anfrage abschicken.

31.12.2019 bocombo | Kategorie: PHP/ Ticketsystem
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:07 Uhr.