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

  • Igäl
    hat ein Thema erstellt simplexml, redundante elemente und php.

    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

  • nikosch
    antwortet
    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.

    Einen Kommentar schreiben:


  • Igäl
    antwortet
    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?

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • Igäl
    antwortet
    Hm... Dann hab ich einfach eine weitere Instanz die ich berücksichtigen muss. Welche Vorteile entspringen mir daraus? (Immer dieses blöde Profitdenken )

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • Igäl
    antwortet
    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?

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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

    Einen Kommentar schreiben:


  • Igäl
    antwortet
    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

    Einen Kommentar schreiben:


  • Igäl
    antwortet
    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

    Einen Kommentar schreiben:

Lädt...
X