【问题标题】:How do I create a duplicate of an XML element, but change the name of the element and delete the original? [duplicate]如何创建 XML 元素的副本,但更改元素的名称并删除原始元素? [复制]
【发布时间】:2011-08-03 04:37:52
【问题描述】:

可能重复:
How do you rename a tag in SimpleXML through a DOM object?

如果我有这样的 XML 文档:

<document>
  <dogs>
    <bulldog>Blu</bulldog>
    <terrier>Benjie</terrier>
  </dogs>
  <cats>
    <tiger>Tiggger</tiger>
    <lion>Cowardly</lion>
  </cats>
</document>

而且我想转载,添加一些属性,但不保留原版....

<document>
  <canine type="fiction">
    <bulldog>Blu</bulldog>
    <terrier>Benjie</terrier>
  </canine>
  <feline type="fiction">
    <tiger>Tiggger</tiger>
    <lion>Cowardly</lion>
  </feline>
</document>

在 SimpleXML 中我会使用什么策略?

【问题讨论】:

    标签: php xml simplexml xml-parsing


    【解决方案1】:

    我认为您需要制作数据的深层副本,删除 &lt;dogs&gt; 元素,创建新的 &lt;canine&gt; 元素,然后附加之前的深层副本。

    编辑:虽然您可以使用 $copy = clone $sxml-&gt;dogs; 进行克隆,然后执行 unset($sxml-&gt;dogs);,但实际的递归添加很痛苦,您可能需要编写自己的代码自己的递归的东西。 PHP.net cmets 中有一些示例。

    如果事情变得更复杂,您可能还想考虑使用 DOM。 (如有必要,您可以使用 SimpleXML 并转换 tofrom DOM。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-07
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 2017-12-12
      • 1970-01-01
      相关资源
      最近更新 更多