将XML转换为一维列表

时间:2016-07-29 13:22:13

标签: xml data-structures modx

我为MODX编写了一个脚本,它读取XML Feed并将其解析为占位符,因此CMS可以在其模板中使用它。

它可以在一个级别上正常工作,因为它将所有父元素视为子元素并将它们放入这样的占位符:

<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文件中可用的元素是什么。

1 个答案:

答案 0 :(得分: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]] =&gt; &#34;&#34;
  2. [[+ child.1._age]] =&gt; 15
  3. [[+ child.1.name]] =&gt; &#34;布兰妮&#34;
  4. [[+ child.2.name]] =&gt; &#34;鲍勃&#34;
  5. [[+ child.1.toy]] =&gt; &#34;塑料起重机,木屋&#34;
  6. [[+ child.1.toy.2]] =&gt; &#34;木屋&#34;
  7. [[+ child._length]] =&gt; 2
  8. 如果你想建议形成你的榜样,我认为 [[+ child.toy.2]] [[+ child.toy_2]] 将是够了。