2016-07-29 62 views
0

我为MODX编写了一个脚本,该脚本读取XML提要并将其解析为占位符,因此CMS可以在其模板中使用它。将XML转换为一维列表

它正常工作与一个级别,因为它需要所有的父元素的孩子,并将它们放入占位符这样的:

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

它的工作原理与属性,太:

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

我努力想办法让孙子们以一种很好的方式进行分析。

我不希望孩子的元素覆盖其他元素。

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

如果我只是将它追加到当前元素,第二个玩具会覆盖第一个玩具。我必须使用插入的索引吗?任何想法?

编辑:我不知道XML文件中可用的元素是什么。

+0

没有看到代码,你用来解析XML和设置占位符的建议。你能证明吗? – Vasis

回答

0

因为没有明确的XML格式,所以这个任务并不困难。在这种情况下,您需要根据XML Spec预测所有案例。

我可以给你我的那个想法,你怎么能启动:

<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]] => “布兰妮”
  4. [[+ child.2.name]] => “鲍勃”
  5. [[+ child.1 .toy]] =>“塑料吊车,木屋”
  6. [[+ child.1.toy.2] => “木屋”
  7. [[+ child._length] => 2

如果你想奉劝刚刚形成你的榜样,我认为[[+ child.toy.2]][[+ child.toy_2]]就足够了。