Ankündigung

Einklappen
Keine Ankündigung bisher.

simplexml, redundante elemente und php

Einklappen

Neue Werbung 2019

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

  • simplexml, redundante elemente und php

    Hallo Leute

    Ich hab ein kleines Problem und zwar handelt es sich um folgendes (Bitte nicht hauen, hab die Suchfunktion benutzt. Aber die Threads waren zu weit führend bis jetzt für mich):

    Ich habe ein XML-File mit Artikeldaten nach folgendem Muster:

    Code:
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <Artikel>
    <Unwichtig>Bla</Unwichtig>
    <SehrUnwichtig>Blabla</SehrUnwichtig>
    <Wichtig>Den Inhalt aus dem Feld will ich</Wichtig>
    <AuchWichtig>1</AuchWichtig>
    <EbenfallsWichtig>10</EbenfallsWichtig>
    <Essentiell>13</Essentiell>
    <SehrEssentiell>20</SehrEssentiell>
    </Artikel>
    
    <Artikel>
    <Unwichtig>Bla</Unwichtig>
    <SehrUnwichtig>Blabla</SehrUnwichtig>
    <Wichtig>Den Inhalt aus dem Feld will ich</Wichtig>
    <AuchWichtig>1</AuchWichtig>
    <EbenfallsWichtig>10</EbenfallsWichtig>
    <Essentiell>13</Essentiell>
    <SehrEssentiell>20</SehrEssentiell>
    </Artikel>
    
    <Artikel>
    <Unwichtig>Bla</Unwichtig>
    <SehrUnwichtig>Blabla</SehrUnwichtig>
    <Wichtig>Den Inhalt aus dem Feld will ich</Wichtig>
    <AuchWichtig>1</AuchWichtig>
    <EbenfallsWichtig>10</EbenfallsWichtig>
    <Essentiell>13</Essentiell>
    <SehrEssentiell>20</SehrEssentiell>
    </Artikel>
    ...
    ...
    ...
    Nundenn... Ich habs mittlerweile hingekriegt, dass ich mit
    PHP-Code:
    if (file_exists('Artikel.xml')) {
    $xml simplexml_load_file('Artikel.xml');
     


    echo 
    $xml->Wichtig[0];
     
    } else {
    exit(
    'Konnte Datei nicht laden.');

    den Inhalt aus dem Feld auslesen kann, sofern ich nur einmal <Artikel></Artikel> drin habe. Sobald sich der Datensatz wiederholt, funktioniert das nicht mehr. Könnt ihr mir verraten warum das so ist? Wie gesagt befinde ich mich mit XML auf Neuland.

    Gruss Igäl
    Das Recht auf Dummheit gehört zur Garantie der freien Entfaltung der Persönlichkeit.
    Mark Twain


  • #2
    Anscheinend bin ich verflucht und finde die Lösung immer in dem Moment, der kurz auf mein Posting folgt.

    Hab mir mal das Objekt mit var_dump() anzeigen lassen. Damit konnte ich herausfinden, wie ich darauf zuzugreifen habe:

    $xml->Artikel[x]->Wichtig;

    Werd aber vermutlich noch viele weitere Fragen haben
    Das Recht auf Dummheit gehört zur Garantie der freien Entfaltung der Persönlichkeit.
    Mark Twain

    Kommentar


    • #3
      Doch noch ein kleines Problem:

      echo $arr[$cnt]["BLG"] gibt folgende Ausgabe:
      Code:
      SimpleXMLElement Object ( [0] => 1 )
      echo $arr[$cnt]["BLG"] gibt als Ausgabe "1".

      PHP-Code:
      for($i=12;$i>$arr[$cnt]["BLG"];$i--) {
          echo 
      $i;

      funktioniert nicht und ich vermute er kann $i keinen Wert zuweisen, wegen dem Object. Wie aber greif ich nun auf den Wert im innern des Objects zu? Hab grad wirklich kein Plan und steh aufm Schlauch
      Das Recht auf Dummheit gehört zur Garantie der freien Entfaltung der Persönlichkeit.
      Mark Twain

      Kommentar


      • #4
        Zur Ausgangsfrage: Deinem xml Dokument fehlt das Rootelement. Mit nur einem Artikel-Zweig wird Artikel zur Wurzel des Docs. Normalerweise sollte ein guter xml Parser daran scheitern...

        simple xml ist eigentlich hinreichend dokumentiert
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          Naja das ist das XML-File, welches mir von MS-Access aus einer Tabelle generiert wurde. Hab ich keinen Einfluss drauf -.-" gibts ne Möglichkeit das zu bearbeiten?
          Das Recht auf Dummheit gehört zur Garantie der freien Entfaltung der Persönlichkeit.
          Mark Twain

          Kommentar


          • #6
            Echt? Wie eigeneartig...
            Füge einfach hinter <?xml ...> und am Ende des Dokumentes ein beliebiges Wurzelelement ein...
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              Hm... Dann hab ich einfach eine weitere Instanz die ich berücksichtigen muss. Welche Vorteile entspringen mir daraus? (Immer dieses blöde Profitdenken )
              Das Recht auf Dummheit gehört zur Garantie der freien Entfaltung der Persönlichkeit.
              Mark Twain

              Kommentar


              • #8
                Dass Du mit einer wohlgeformten XML Datei arbeitest. Wundert mich, dass der Parser die überhaupt nimmt.
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  Scheint ein netter Parser zu sein

                  Hm... Zurzeit versuch ich aus einem XML-File ein CSV zu generieren, das in Excel eingelesen werden kann. Text sieht folgendermassen aus:

                  TexttextTexttextTexttextTexttextTexttextTexttextTe xttextTexttext
                  TexttextTexttextTexttextTexttextTexttextTexttextTe xttextTexttext

                  TexttextTexttextTexttextTexttextTexttextTexttext
                  TexttextTexttext
                  TexttextTexttextTexttextTexttext

                  Nu sollte das ganze auf eine Linie kommen und da wos ein Absatz hat, soll ein Steuerzeichen hin, das Excel dann sagt, dass ein solcher Absatz generiert werden soll. Wie mache ich sowas? Einfach statt Absatz zweimal \n einfügen?
                  Das Recht auf Dummheit gehört zur Garantie der freien Entfaltung der Persönlichkeit.
                  Mark Twain

                  Kommentar


                  • #10
                    Ich verstehe zwar nicht, was das mit einem csv (=kommasepariert im eigentlichen Wortsinne), geschweige denn mit dem Ausgangsthema zu tun hat, aber ansonsten: ja. Und besser unter Windows \r\n benutzen.
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar

                    Lädt...
                    X