turk porno porno escort rokettube
Ergebnis 1 bis 13 von 13

Thema: DomDocument removeChild() Error ?

  1. #1
    Benutzer
    Registriert seit
    20.02.2009
    Beiträge
    72
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard DomDocument removeChild() Error ?

    Hi,

    ich schon wieder

    ich will aus folgendem xml file ein child ("entity") löschen.

    xml file:
    Code:
    <document>
        <entity>
         ...bla...bla...
        </entity>
    </document>
    folgendes habe ich probiert:

    PHP-Code:
    $filename "C:\fsdfdf";
    $doc = new DomDocument;
    $doc->Load($filename);
    $delete $doc->getElementsByTagName("entity")->item(0);
    $doc->removeChild($delete);
    $xml_string $doc->saveXML(); 
    Fehlermeldung:
    Code:
    The following error occurred:
         exception 'DOMException' with message 'Not Found Error'
    Was hab ich falsch gemacht? Warum findet er die entity nicht?

    Danke und Gruß Sebastian

  2. #2
    Erfahrener Benutzer
    Registriert seit
    28.12.2006
    Beiträge
    9.966
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Benutz PHP5 (DOMDocument) und nicht PHP4 (DomDocument), lerne zwischen Groß- (Load()) und Kleinschriebung (load()) zu unterscheiden. Damit wär schon mal das schlimmste erledigt.
    Die Lösung selbst findet sich im PHP-Manual, man beachte das "Example #1".

  3. #3
    Benutzer
    Registriert seit
    20.02.2009
    Beiträge
    72
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Oh je.

    Hab ja einiges probiert aber auf die Idee das die Geschichte mit PHP 5 eine Revision erfahren hat bin ich nicht gekommen.

    Danke vielmals.

  4. #4
    Benutzer
    Registriert seit
    20.02.2009
    Beiträge
    72
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Ok nun aber erhalte ich jedesmal eine empty nodelist obwohl das spezifizierte Element auf jeden Fall existiert:

    xml File:
    Code:
    <dataConfig> 
      <document>
        <entity name="definition">
         ...bla...bla...
        </entity>
      </document>
    </dataConfig>
    Das habe ich versucht:
    PHP-Code:
    $filename "C:\dfsdfdf.xml"
    $doc = new DOMDocument;
    $doc->load($filename);
    $doc->preserveWhiteSpace false;

    $xpath = new DOMXPath($doc);
    $xpathString "//dataConfig/document/entity[@name='definition']";

    $entries $xpath->query($xpathString);

    Zend_Debug::dump($entries); 
    Ergebniß:
    Code:
    object(DOMNodeList)#51 (0) {
    }
    ???

    Seltsam.

  5. #5
    Erfahrener Benutzer
    Registriert seit
    28.12.2006
    Beiträge
    9.966
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Die ist nicht leer, sie ist intern und lässt dich nicht ran

    Mit meinen Hinweis auf das Manual und dem darin enthaltenen Beispiel #1 geht es aber schon so in etwa, wie du es dir anfangs vorgestellt hast.
    PHP-Code:
    $filename dirname(__FILE__). "/bla.xml";
    $doc = new DOMDocument;
    $doc->load ($filename);
    $delete $doc->getElementsByTagName("entity")->item(0);
    $doc->documentElement->removeChild($delete);   // Das hier ist aus Example #1 und funktioniert ;)
    $xml_string $doc->saveXML(); 

  6. #6
    Benutzer
    Registriert seit
    20.02.2009
    Beiträge
    72
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Leider will er trotzdem nicht, selbe Fehlermeldung wie zu Anfang:
    Code:
    The following error occurred:
     exception 'DOMException' with message 'Not Found Error' in H:\xampp\htdocs\!zend_appz\ZendApp\application\controllers\SandboxController.php:246 Stack trace: #0
    Die Zeile 246 im Controller ist:
    PHP-Code:
    $doc->documentElement->removeChild($delete); 
    Also er findet wohl denn Eintrag im xml file nicht warum verstehe ich aber nicht.

    Das xml file nochmals 1zu1:
    Code:
    <dataConfig>
      <document>
        <entity name="definition">
         ...bla...bla...
        </entity>
      </document>
    </dataConfig>
    Seltsam das (zumindest für mich)

  7. #7
    Benutzer
    Registriert seit
    20.02.2009
    Beiträge
    72
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Auch mit dieser Methode kommt die selbe Fehlermeldung "not found":

    PHP-Code:
            $filename "C:/test.xml";
            
            
    $doc = new DOMDocument ( );
            
    $doc->load $filename );
            
    $doc->preserveWhiteSpace false;
            
            
    $xpath = new DOMXPath $doc );
            
    $xpathString "//dataConfig/document/entity[@name='definition']";
            
            
    $entries $xpath->query $xpathString$doc );
            foreach (
    $entries as $entry)
            {
            echo 
    $entry->nodeName//er gibt "entity" also das Richtige aus also muß das stimmen!!!
            
    $doc->documentElement->removeChild($entry); //hier der selbe 'Not found Error'
            
    }
            
            
    $xml_string $doc->saveXML();
            
            
    Zend_Debug::dump($xml_string); 
    Das gibts doch nicht!
    Geändert von 11&2 (21.04.2009 um 13:17 Uhr)

  8. #8
    Benutzer
    Registriert seit
    20.02.2009
    Beiträge
    72
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Habs geschafft, dennoch verstehe ich nicht warum es überall anders beschrieben wird

    statt:
    PHP-Code:
      foreach ($entries as $entry)
            {
            echo 
    $entry->nodeName//er gibt "entity" also das Richtige aus also muß das stimmen!!!
            
    $doc->documentElement->removeChild($entry); //hier der selbe 'Not found Error'
            

    muß es lauten
    PHP-Code:
    foreach ($entries as $node)
            {
            
    $parent $node->parentNode;
            
    $oldnode $parent->removeChild $node );
            } 
    Der Rest passt unten mit dem xpath Beispiel.

    Danke

  9. #9
    Erfahrener Benutzer
    Registriert seit
    28.12.2006
    Beiträge
    9.966
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Nur um nochmal Verwirrung zu stiften: Mein Original-Testscript
    PHP-Code:
    <?php
    error_reporting
    (E_ALL E_STRICT);
    ini_set('display_errors',1);


    $filename dirname(__FILE__). "/bla.xml";
    $doc = new DOMDocument;
    $doc->load ($filename);
    $delete $doc->getElementsByTagName("entity")->item(0);
    $doc->documentElement->removeChild($delete);
    $xml_string $doc->saveXML();
    echo 
    $xml_string;
    Klappt problemlos, solange parallel zum Skript bla.xml existiert. Inhalt ist dabei 1:1 von dir kopert

    Möglicherweise gibts da Versionsunterschiede.

  10. #10
    Erfahrener Benutzer
    Registriert seit
    22.03.2007
    Ort
    Böbingen/Rems
    Beiträge
    734
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Mann kann einen Knoten immer nur aus seinem Parent löschen.

    PHP-Code:

    $node
    ->parentNode->removeChild($node); 
    Funktioniert deshalb immer, solange Node einen Parent hat.

    @KingCrunch
    Das hat nichts mit Versionsunterschieden zu tun. Dein Script funktioniert weil du den Knoten aus seinem Parent löscht.

    $doc->documentElement = <document>

    @11&2
    Mann kann halt nicht immer ein Beispiel 1 zu 1 übernehmen mann muss sich halt auch die zu Grunde liegende XML Datei anschauen.

    Mfg Akkie

  11. #11
    Erfahrener Benutzer
    Registriert seit
    28.12.2006
    Beiträge
    9.966
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zitat Zitat von akkie
    Mann kann halt nicht immer ein Beispiel 1 zu 1 übernehmen mann muss sich halt auch die zu Grunde liegende XML Datei anschauen.
    Zitat Zitat von KingCrunch
    Klappt problemlos, solange parallel zum Skript bla.xml existiert. Inhalt ist dabei 1:1 von dir kopert


    Und deshalb:
    Zitat Zitat von akkie
    Das hat nichts mit Versionsunterschieden zu tun. Dein Script funktioniert weil du den Knoten aus seinem Parent löscht.
    Das ist mir schon klar, bleibt bloss offen, wieso es bei 11&2 so nicht funktionierte.

  12. #12
    Erfahrener Benutzer
    Registriert seit
    22.03.2007
    Ort
    Böbingen/Rems
    Beiträge
    734
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Er benutzt ab dem 3. Post eine andere XML Struktur.

    $doc->documentElement = <dataConfig>

    Und <dataConfig> ist nicht der Parent von <entity>

    Mfg Akkie

  13. #13
    Erfahrener Benutzer
    Registriert seit
    28.12.2006
    Beiträge
    9.966
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Tatsache, Asche auf mein Haupt :X

Ähnliche Themen

  1. domdocument::domdocument() expects parameter 2 to be long
    Von Innocentus im Forum Einsteigerfragen
    Antworten: 8
    Letzter Beitrag: 06.03.2009, 18:25
  2. Error Controller
    Von Gis im Forum MVC
    Antworten: 7
    Letzter Beitrag: 14.08.2008, 16:50
  3. Error message
    Von bonzei im Forum Einsteigerfragen
    Antworten: 9
    Letzter Beitrag: 09.03.2008, 17:59
  4. Error 403 - Forbidden
    Von kampfgnom im Forum Über das Forum
    Antworten: 28
    Letzter Beitrag: 01.12.2007, 13:18
  5. Error-404 Dokument
    Von Filip im Forum Einsteigerfragen
    Antworten: 4
    Letzter Beitrag: 05.10.2007, 20:30

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •