2016-07-29 11 views
0

Ich habe ein Skript für MODX geschrieben, das einen XML-Feed liest und in Platzhalter zerlegt, damit der CMS damit in seinen Templates arbeiten kann.XML in eine eindimensionale Liste konvertieren

Es ist mit einer Ebene funktioniert gut, da es alle Kinder übergeordnete Elemente nimmt und setzt sie in Platzhalter wie folgt aus:

<child>Britney</child> -> into placeholder [[+child]] -> displays as "Britney". 

Es arbeitet mit Attributen zu:

<child age="15">Britney</child> -> into placeholder [[+child.age]] -> displays as "15". 

Ich bin Schwierigkeiten, über einen Weg nachzudenken, wie die Enkel auf eine nette Art und Weise geparst werden können.

Ich möchte nicht Kinder Elemente andere Elemente zu überschreiben.

<child age="15"> 
    <name>Britney</name> 
    <toy>plastic crane</toy> 
    <toy>wooden house</toy> 
</child> 

Wenn ich es nur an das aktuelle Element anhängen, würde das zweite Spielzeug das erste überschreiben. Muss ich mit eingefügten Indizes arbeiten? Irgendeine Idee?

Edit: Ich weiß nicht, welche Elemente möglicherweise in der XML-Datei verfügbar sind.

+0

Keine Ratschläge ohne Code zu sehen, den Sie verwenden, um XML zu analysieren und Platzhalter festzulegen. Kannst du es zeigen? – Vasis

Antwort

0

Es ist eine kleine schwierige Aufgabe, da Sie kein explizites XML-Format haben. In diesem Fall müssen Sie alle Fälle gemäß XML Spec vorhersagen.

kann ich Ihnen meine Gedanken, dass, wie können Sie beginnen:

<child age="15"> 
    <name>Britney</name> 
    <toy>plastic crane</toy> 
    <toy>wooden house</toy> 
</child> 

<child age="18"> 
    <name>Bob</name> 
    <toy>toysoldier</toy> 
    <toy>teddybear</toy> 
</child> 
  1. [[+ child.1]] => ""
  2. [[+ child.1._age ]] => 15
  3. [[+ child.1.name]] => "Britney"
  4. [[+ child.2.name]] => "Bob"
  5. [[+ child.1 .spielzeug]] => "Kunststoffkran, Holzhaus"
  6. [[+ child.1.toy.2]] => "Holzhaus"
  7. [[+ child._length]] => 2

Wenn Sie nur Ihr Beispiel bilden beraten wollen, i denke [[+ child.toy.2]] oder [[+ child.toy_2]] wird genug sein.

Verwandte Themen