severus: XML mit PHP parsen

Ich habe eine Parser geschrieben der soweit funktioniert. Er erkennt alle notwendigen startElemente und endElemente in der Form:

  
<tag1>  
<utag11>Test zu 11</utag11>  
<utag12>Test zu 12</utag12>  
<utag13>Test zu 13</utag13>  
</tag1>  
  
<tag2>  
<utag21>Test zu 21</utag21>  
<utag22>Test zu 22</utag22>  
<utag23>Test zu 23</utag23>  
</tag2>  
  
<tag3>  
<utag31>Test zu 31</utag31>  
<utag32>Test zu 32</utag32>  
<utag33>Test zu 33</utag33>  
</tag1>  

was ist aber bei folgender Struktur:

  
<tag1>  
Text vor den utags  
<utag11>Test zu 11</utag11>  
<utag12>Test zu 12</utag12>  
<utag13>Test zu 13</utag13>  
</tag1>  

ich weiß nicht wie ich da rankomme. Mir fehlt dafür die Logik.
Vielleicht kann mir einer einen Tipp geben

  1. Hi,

    Ich habe eine Parser geschrieben

    Wozu willst du sowas selber schreiben?

    PHP hat mehrere Moeglichkeiten, XML zu parsen, bereits an Bord.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. Hallo,

      Ich habe eine Parser geschrieben
      Wozu willst du sowas selber schreiben?

      weil selber schreiben oft schneller und weniger aufwendig ist, als sich in etwas einzuarbeiten, was jemand anders geschrieben hat (kommt drauf an, wie gut die Doku ist; meistens ist sie unzureichend).
      Das ist zumindest meine Erfahrung und der Grund, warum ich selten Fremdbibliotheken verwende.

      So long,
       Martin

      --
      F: Was macht ein Offizier, der in der Nase bohrt?
      A: Er holt das Letzte aus sich heraus.
  2. Lieber severus,

    Ich habe eine Parser geschrieben

    warum? Bist Du mit den bereits existierenden Parserfunktionen von PHP unzufrieden? Ist SimpleXML auch nicht nach Deinem Geschmack?

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Ich habe ja den Parser von PHP verwendet!

      1. Lieber severus,

        Ich habe ja den Parser von PHP verwendet!

        und wie sieht das Array aus, das er Dir zurückgibt?

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
      2. Hi,

        Ich habe ja den Parser von PHP verwendet!

        Warum sagst du das nicht gleich, sondern behauptest, du haettest einen Parser "geschrieben"?

        Und *welchen*, das wissen wir jetzt immer noch nicht.
        Kannst du dich jetzt bitte langsam mal so umfangreich ausdruecken, dass dein Problem auch nachvollzogen werden kann?
        </hilfe/charta.htm#tipps-fuer-fragende>

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
  3. Hi,

    was ist aber bei folgender Struktur:

    <tag1>
    Text vor den utags
    <utag11>Test zu 11</utag11>
    <utag12>Test zu 12</utag12>
    <utag13>Test zu 13</utag13>
    </tag1>

    
    >   
    > ich weiß nicht wie ich da rankomme. Mir fehlt dafür die Logik.  
    > Vielleicht kann mir einer einen Tipp geben  
      
    ich hatte ein ähnliches Problem was ich mit Regex lösen wollte:  
    <https://forum.selfhtml.org/?t=182792&m=1210087>  
    Da dies aber schwieriger scheint als ich dachte, bin ich nun folgendermassen vorgegangen:  
      
    mit regex wie im Link die äusseren Elemente in meinem Fall <tr> als array matchen, dann mit einer Schleife durchlaufen und jede wert wieder als array matchen, also <td>. Ich wollte zwar zunächst komplett dann auf regex verzichten, ging aber nicht eben aus dem gleichen Grund wie dein problem, Leerzeichen und Zeilenumbrüche. Aber durch die Pattern habe erst mal alles gematcht un dann nacher mit str\_replace gesäubert.  
      
    Funktioniertr alles tadellos, aber eine einzige Regex wäre mir natürlich lieber.  
      
      
    Mario