XML-Datei erstellen mit PHP - --> Attribute <--

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

  • XML-Datei erstellen mit PHP - --> Attribute <--

    hi,

    .. ich habe mich schon en bisschen mit php und xml befasst,
    habe für das auslesen von Xml-Dateien simplexml benutzt.

    .. jetzt habe ich vor eine XML-Datei zu erstellen, nur das bietet simple xml nicht an.

    .. habe ein bisschen gesucht und bin auf die DOM-Extension gestossen.

    .. folgendes klappt wunderbar:

    PHP-Code:
    <?php

    $doc 
    = new DOMDocument('1.0');
    // we want a nice output
    $doc->formatOutput true;

    $root $doc->createElement('book');
    $root $doc->appendChild($root);

    $title $doc->createElement('title');
    $title $root->appendChild($title);

    $text $doc->createTextNode('This is the title');
    $text $title->appendChild($text);

    echo 
    'Wrote: ' $doc->save("/tmp/test.xml") . ' bytes'// Wrote: 72 bytes

    ?>
    (Beispiel aus php.net DOMDocument->save() )

    .. ich muss aber für manche knoten auch attribute angeben,
    da kommt mein eigentliches problem.

    z.B. will ich folgendes:

    <book>
    <title="1"></title>
    <title="2"></title>
    </book>

    Ich habe folgendes versucht:
    PHP-Code:
      $title $doc->createElement('title');
      
    $attribute $title->createAttribute('1');
      
    $title.setAttributeNode($attribute);
      
    $title $root->appendChild($title); 
    Das leider ohne erfolg, bei mir kommt folgende Fehlermeldung:
    Fatal error: Call to undefined method DOMElement::createAttribute()
    habe alles mögliche versucht rumm zu drehen, aber nix hinbekommen, in der createAttribute - Seite von php.net steht auch leider kein Beispiel.

    .. naja, hoffe hier kann mir jemand helfen.
    greetz

  • #2
    Re: XML-Datei erstellen mit PHP - --&gt; Attribute &lt;--

    Original geschrieben von p4cm4n
    z.B. will ich folgendes:

    <book>
    <title="1"></title>
    <title="2"></title>
    </book>
    Nein, das willst du nicht - das ist nämlich kein XML.
    Da ist kein Attribut vorhanden, sondern lediglich ungültige Tagnamen.

    Fatal error: Call to undefined method DOMElement::createAttribute()
    createAttribut ist keine Methode von DOMElement - sondern von DOMDocument.

    Und die folgende Zeile in deinem Script ist natürlich auch fehlerhaft.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      mhh.. gibt des da also keine möglichkeit das so zu machen?

      .. muss für einen order datenaustausch das so in xml verwirklichen.

      <bdata="1">
      </bdata>
      <bdata="2">
      </bdata>

      -- bdata sind dabei die einzelnen positionen der order.

      Kommentar


      • #4
        Original geschrieben von p4cm4n
        <bdata="1">
        Begreife jetzt bitte, dass sowas kein wohlgeformtes XML ist.

        Ein Attribut hat einen Namen und einen Wert
        <element attribut="wert" />
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Hallo zusammen,

          Attribute und deren Werte stehen in einem TAG!
          <TAG Attribut="Wert">TEXT</TAG>


          Wenn Du die Zeile:

          $attribute = $title->setAttribute('index','1');

          vor dem save-Befehl eingibst,
          so erhälts Du folgendes im XML-file:

          <title index="1">This is the title</title>


          funktioniert bei mir mit dem IE und Firefox

          Kommentar


          • #6
            simplexml kann auch schreiben: http://www.php.net/manual/de/ref.simplexml.php

            siehe Beispiel 1915/1916
            Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
            - ...und solche Behauptungen in "falsches Resourcenmanagement"

            Kommentar


            • #7
              thx @henry_56 und zerni.

              habe mich ein wenig falsch ausgedruckt, wollte auch eigentlich so ein tag machen:

              <bdata counter="1"> anstatt <bdata="1">
              .. war wohl schon zuviel an dem abend.

              .. wie ich sehe geht das auch mit simplexml. also thx nochmal.

              Kommentar

              Lädt...
              X