首页 > 解决方案 > 使用 PHP 处理 XML 文件/数据

问题描述

我有一个 XML 文件作为主文件 (master.xml),它的内容是空白的。

<?xml version="1.0" encoding="UTF-8"?>
<master/>

我有一个循环,我在其中获取一些数据并将它们转换为 xml 文件(item.xml),它们的内容就像

<?xml version="1.0" encoding="UTF-8"?>
<master>
   <item>
      <key1>value1</key1>
      <key2>value2</key2>
      <key3>value3</key3>
   </item>
</master>

我想要的只是能够从中获取项目item.xml并将其插入master.xml到主标签下,因此最终结果看起来像

<?xml version="1.0" encoding="UTF-8"?>
<master>
  <item>
    <key1>value1</key1>
    <key2>value2</key2>
    <key3>value3</key3>
  </item>
  <item>
    <key1>value1</key1>
    <key2>value2</key2>
    <key3>value3</key3>
  </item>
  <item>
    <key1>value1</key1>
    <key2>value2</key2>
    <key3>value3</key3>
  </item>
  <item>
    <key1>value1</key1>
    <key2>value2</key2>
    <key3>value3</key3>
  </item>
</master>

我不知道它是否有帮助,但现在的代码是这样的。

$targetDom = new DOMDocument();
$targetDom->load('master.xml');

while($row = $sql->fetch(PDO::FETCH_ASSOC)) {
  // Data beeing processed and stored as item.xml

  $sourceDom = new DOMDocument();
  $sourceDom->load('item.xml');

  foreach ($sourceDom->documentElement->childNodes as $child) {
    $targetDom->appendChild(
      $targetDom->importNode($child, TRUE)
    );
  }
}

上面的代码有这个结果

<?xml version="1.0" encoding="UTF-8"?>
<master/>
<item>
  <key1>value1</key1>
  <key2>value2</key2>
  <key3>value3</key3>
</item>
<item>
  <key1>value1</key1>
  <key2>value2</key2>
  <key3>value3</key3>
</item>
<item>
  <key1>value1</key1>
  <key2>value2</key2>
  <key3>value3</key3>
</item>
<item>
  <key1>value1</key1>
  <key2>value2</key2>
  <key3>value3</key3>
</item>

我错过了什么?

标签: phpxml

解决方案


您需要将项目附加到$targetDom

利用:

$targetDom->documentElement->appendChild(
  $targetDom->importNode($child, TRUE)
);

推荐阅读