XML via SimpleXML und Smarty

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

  • XML via SimpleXML und Smarty

    Ich möchte auf eine XML-Datei mit SimpleXML zugreifen und das SimpleXML Objekt in einem Smarty-Template verwenden. Das funktioniert für die meisten XML-Dateien hervorragend. Allerdings habe ich Probleme mit dem Zugriff auf Attribute und auf Tagbezeichnungen, die nicht alphanumerisch sind.

    Und zwar ...

    Ausgehend von folgender XML-Datei:

    Code:
    $xml = <<< XML
    <h id="cdata">
    <dok.tit>cdata<newline />cdata</dok.tit>
    <dok.id>cdata</dok.id>
    </h>
    XML;
    Im PHP wie folgt:

    PHP-Code:
    $smarty = new Smarty();
    $obj simplexml_load_string($xml);
    $smarty->assign('document'$obj); 
    Soll im Template auf h@id h/dok.tit/. zugegriffen werden

    ABER das funktioniert nicht:
    {$document->@attributes.id}
    und das funktioniert auch nicht:
    {$document->dok.tit}

    In beiden Fällen meldet Smarty einen Syntaxfehler.

    Im Moment löse ich das Problem so:
    Code:
    {assign var=id value=$document|xpath:'h/@id'}
    {$id.0.id}
    {assign var=tit value=$document|xpath:'h/dok.tit'}
    {$tit.0}
    Allerdings ist diese Lösung natürlich kaum mehr als eine Krücke und außerdem ausgesprochen hässlich.

    Gibt es eine bessere Möglichkeit via PHP und/oder Smarty auf diese Tags zuzugreifen?

  • #2
    wenn es so klein bleibt, ginge doch auch JSON?

    Kommentar


    • #3
      JSON? Verstehe ich nicht - was soll das bringen?

      Die Frage ist doch nicht, gibt es irgendein alternatives Datenformat zu XML oder eine andere API mit der das geht, sondern wie sieht eine saubere Lösung für XML via SimpleXML aus. Und zwar interessiert mich wirklich NUR dieser eine Fall. Als praxisnahe Lösung.
      Alles darüber hinaus führt an dieser Stelle auch zu weit weg vom Thema und endet wahrscheinlich in Polemik und theoretischer Fachsimpelei.

      Über alternative Lösung können wir jedoch gern im Off-Topic Bereich diskutieren - nachdem dieses Problem gelöst ist!

      Kommentar

      Lädt...
      X