php 将child追加到dom会给child添加一个冗余的名称空间前缀

41ik7eoe  于 2022-12-21  发布在  PHP
关注(0)|答案(1)|浏览(103)

我正在尝试在php中将一个XML片段附加到一个基文档中。例如,基文档可以是:

<A></A>

这个片段是:

<B>
  <C xmlns="http://foo"/>
</B>

我希望结果是:

<A>
  <B>
    <C xmlns="http://foo"/>
  </B>
</A>

我尝试用两种不同的方法来做到这一点:
一个三个三个一个
这两种方法都会产生以下结果:

<A>
  <B xmlns:default="http://foo">
    <default:C xmlns="http://foo"/>
  </B>
</A>

在php中有没有一种方法可以在没有冗余的xmlns:default属性和添加的default前缀的情况下获得预期的结果?

nzk0hqpo

nzk0hqpo1#

试着这样做:

$xpath = new DOMXPath($dom);
$destination = $xpath->query('//A');

$fragment = $dom->createDocumentFragment();
$fragment->appendXML('
  <B>
    <C xmlns="http://foo"/>
  </B>
');

$destination[0]->appendChild($fragment);
echo $dom->saveXml();

输出应该是预期的输出。

相关问题