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:
Im PHP wie folgt:
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:
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?
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;
PHP-Code:
$smarty = new Smarty();
$obj = simplexml_load_string($xml);
$smarty->assign('document', $obj);
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}
Gibt es eine bessere Möglichkeit via PHP und/oder Smarty auf diese Tags zuzugreifen?
Kommentar