Announcement

Collapse
No announcement yet.

XML in PHP darstellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XML in PHP darstellen

    Guten Morgen und Mahlzeit,

    ich habe folgendes Problem. In einer externen xml Datei hab ich folgenden Ausschnitt des Inhalts:

    Code:
    ...<P>
    (1) Die Vorschriften dieses Gesetzes gelten für
    <DL Font="normal" Type="arabic">
    <DT>1.</DT>
    <DD Font="normal">
    <LA Size="normal">die Vermeidung von Abfällen sowie</LA>
    </DD>
    <DT>2.</DT>
    <DD Font="normal">
    <LA Size="normal">die Verwertung von Abfällen,</LA>
    </DD>
    <DT>3.</DT>
    <DD Font="normal">
    <LA Size="normal">die Beseitigung von Abfällen und</LA>
    </DD>
    <DT>4.</DT>
    <DD Font="normal">
    <LA Size="normal">die sonstigen Maßnahmen der Abfallbewirtschaftung.</LA>
    </DD>
    </DL>
    </P>...
    Ich möchte diese nun in PHP ausgeben und für den User sichtbar machen. Ich lese diese über simplexml_load_file ein und kann auch den Inhalt <p> darstellen
    Probleme bereitet mir die Darstellung der Daten im <LA> Tag, da diese in der Ausgabe hinter den Inhalt des <DT> Elementes sollen. (Bsp. 1. die Vermeidung von Abfällen sowie). Gebe ich <DT> in einer foreach Schleife aus, so bekomme ich jedes <DT> Element, was zwar schön ist, aber nur das erste <LA> Element. Bilde ich eine foreach Schleife mit dem <DL> Element, so bekomme ich logischerweise nur die jeweils ersten Inhalte aus <DT> und <LA>.

    Hat jemand eine Idee oder kann mir ein Stichwort gebenn wie man in diesen Fällen zur Lösung kommt? Danke im Voraus und einen schönen Sonntag.

    VG
    Marco

  • #2
    Habe die Frage nicht verstanden.
    So würde ich sagen, such dir das Wurzelelement ab dem du ausgeben willst und gehe mit einer rekursiven Funktion durch das DOM. Stichwort treewalk
    Dann kannst du je nach Element die gewünschten Ausgaben tätigen
    Christian

    Comment


    • #3
      Vielen Dank für deine Antwort, dann schau ich mal zum Thema rekursive Funktionen durchs Netz und gucke, ob ich da weiter komme

      Comment


      • #4
        https://entwickler-forum.de/forum/we...tt-durchlaufen
        Christian

        Comment


        • #5
          https://en.wikipedia.org/wiki/Tree_traversal
          Christian

          Comment


          • #6
            Wie gesagt, nochmals vielen Dank, ich seh ich schon XML ist noch nicht mein Freund ;-). Was ich aber anfänglich meinte ist, dass ich diese Ausgabe aus dem xml von oben in php hinbekomme:

            (1) Die Vorschriften dieses Gesetzes gelten für
            1. die Vermeidung von Abfällen sowie
            2. die Vermeidung von Abfällen sowie
            3. die Vermeidung von Abfällen sowie
            4. die Vermeidung von Abfällen sowie

            Wie du aber siehst wiederholt sich bei 2.-4. der Inhalt, welcher aus <LA> kommt, was natürlich falsch ist. Daher werd ich mich mal in deine Links einlesen.

            Comment


            • #7
              Wenn du nur alle LAs willst
              https://www.php.net/manual/de/simple...ment.xpath.php

              https://stackoverflow.com/questions/...n-php/32487397
              Christian

              Comment


              • #8
                Vielen Dank nochmal für deine Hilfe bei o.g. Dingen. Ich konnte nun das Meiste lösen und mich ein wenig einarbeiten in xml...es fehlt alleine wie immer mehr Freizeit dafür ;-) .
                Aber man hangelt sich ja von Problem zu Problem und hier ist nun , ich hoffe das letzte, aufgetaucht. Evtl hat ja einer eine Idee. Es geht immer noch um das o.g. Thema xml mithilfe von php auszulesen.

                Wenn alles gut läuft hab ich eine xml Struktur von z.B.:

                <p>Das Wetter ist schön wenn
                <text>1. Die Sonne scheint</text>
                <text>2. Es warm ist</text>
                </p>

                Dies ist kein Problem. Manchmal taucht in meiner xml leider auch folgendes auf.

                <p>Das Wetter ist schön wenn
                <text>1. Die Sonne scheint</text>
                <text>2. Es warm ist</text>
                und der Himmel wolkenlos ist.
                </p>

                Greife ich nun auf <p> zu, so bekomme ich: Das Wetter ist schön wenn und der Himmel wolkenlos ist. Dies ist ja logischerweise so nicht gewollt. Gibt es hier einen Trick, um das bei der Ausgabe zu manipulieren oder wäre die xml Datei in diesem Falle fehlerhaft erzeugt?

                Vielen Dank im voraus.

                Comment


                • #9
                  XML ist schon korrekt
                  Aber genau das will man, wenn man auf P zugreift.
                  Also prüfe ob P Childelemente hat und die gesondert auslesen
                  Christian

                  Comment


                  • #10
                    Ja das ist wahr, wahrscheinlich hab ich mich falsch ausgedrückt.
                    Ich bekomme es zwar hin <p> alleine für sich auszulesen und auch <text>, aber nicht in der Reihenfolge, dass erst, der erste Teil von <p> eingelesen wird, dann <text> und dann der Rest von <p>. Danke aber für deinen Tipp, ich gehe dann mal auf die Suche :-)

                    Comment


                    • #11
                      Einige Parser machen einen Unterschied zwischen Text (Das Wetter ist schön wenn und der Himmel wolkenlos ist) und Content (Das Wetter ist schön wenn<text>1. Die Sonne scheint</text><text>2. Es warm ist</text>und der Himmel wolkenlos ist.)
                      Ob es die für PHP gibt weiß ich nicht
                      Christian

                      Comment

                      Working...
                      X