Ankündigung

Einklappen
Keine Ankündigung bisher.

XML Feld Prüfen ob vorhanden

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • XML Feld Prüfen ob vorhanden

    Ich lese mehrere XML Dateien aus. Hierbei kommt es vor das in manchen XML Dateien bestimmte Werte nicht haben diese möchte ich vorher prüfen ob sie vorhanden sind, wie mache ich dass nutze SimpleXML.

    $kundnr = $xml->Table->Record->Table->Record->Field->attributes()->value;

    habe gelesen dass man dass mit ->hasChildNodes() auslesen kann hasChildNodes wird aber nicht erkannt.


  • #2
    XML Feld Prüfen ob vorhanden

    Zitat von Darknet
    nutze SimpleXML
    (...)
    hasChildNodes wird aber nicht erkannt.
    SimpleXML verwendet hasChildren.

    DomNode verwendet hasChildNodes.

    Du musst dich schon entscheiden.

    PHP-Code:
    $xml = <<<XML
    <welt>
        <kontinent>
            <europa>
                <deutschland>
                    <hauptstadt>berlin</hauptstadt>
                </deutschland>
            </europa>
        </kontinent>
        <kontinent>Australien</kontinent>
    </welt>
    XML;
    $xmlIterator = new SimpleXMLIterator$xml );
    for( 
    $xmlIterator->rewind(); $xmlIterator->valid(); $xmlIterator->next() ) {
        if( 
    $xmlIterator->hasChildren() ){
            
    var_dump($xmlIterator->current());
        } 
    // if
    // for 
    Code:
    object(SimpleXMLIterator)[2]
      public 'europa' => 
        object(SimpleXMLIterator)[3]
          public 'deutschland' => 
            object(SimpleXMLIterator)[4]
              public 'hauptstadt' => string 'berlin' (length=6)
    Delirius

    PHP - Grundlagen / PDO - Tutorial / PDO - Dokumentation

    Kommentar


    • #3
      Leider nicht
      hasChildren() wird genauso wenig erkannt.

      Fatal error: Call to undefined method SimpleXMLElement::hasChildren()
      if (!$xml->Table->Record->Table->Record->Field->attributes()->hasChildren()) continue;

      Kommentar


      • #4
        http://stackoverflow.com/questions/1...-a-child-exist
        Zitat von nikosch
        Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

        Kommentar


        • #5
          XML Feld Prüfen ob vorhanden

          Einfach nur kopieren und einfügen ist halt nicht.

          Schau´ dir bitte das Manual an. Da wird der Unterschied zu den beiden Klassen SimpleXMLElement und SimpleXMLIterator ( wie in meinem Beispiel ) klar.
          Delirius

          PHP - Grundlagen / PDO - Tutorial / PDO - Dokumentation

          Kommentar


          • #6
            Ja okay danke

            Kommentar


            • #7
              Warum so umständlich und nicht isset() benutzen?
              Genau so wie bei Arrays ist isset weitestgehend auch für SimpleXML tauglich.
              Nur wenn Methodenaufrufe wie attributes() im Ausdruck sind geht es nicht, und ich muss dort ein Schnitt machen. Dazu ein Beispiel:
              PHP-Code:
              $xml_str '<daten>
               <resultat>
                <genre>
                 <titel1 att="mein attribut">A</titel1>
                 <titel2>B</titel2>
                 <titel3>C</titel3>
                </genre>
               </resultat>
              </daten>'
              ;

              $xml simplexml_load_string($xml_str);
              if(isset( 
              $xml->resultat->genre->titel1 )){
                
              $att $xml->resultat->genre->titel1->attributes();
                if(isset(
              $att->att)){
                  
              var_dump($att->att); 
                }
              }

              //Ausgabe
              //object(SimpleXMLElement)#3 (1) { [0]=> string(13) "mein attribut" } 
              LG jspit
              PHP-Klassen auf github

              Kommentar

              Lädt...
              X