Php 如何将xml文件与根属性合并?

Php 如何将xml文件与根属性合并?,php,xml,domdocument,Php,Xml,Domdocument,我有几个xml文件,它们在根目录中都有属性 大致是这样的: FILE1.XML <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <item_root id="item01" name="Item 01"> <child>content 01</child> </item_r

我有几个xml文件,它们在根目录中都有属性

大致是这样的:

FILE1.XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<item_root id="item01" name="Item 01">
    <child>content 01</child>
</item_root>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<item_root id="item02" name="Item 02">
    <child>content 02</child>
</item_root>

内容01
FILE2.XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<item_root id="item01" name="Item 01">
    <child>content 01</child>
</item_root>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<item_root id="item02" name="Item 02">
    <child>content 02</child>
</item_root>

内容02
。。。等等

我需要用php动态地将所有文件合并到一个文件中。 但是由于我所做的工作,我无法获得根属性。 结果如下所示:

<?xml version="1.0"?>
<itens>
  <item_root>
    <child>content 01</child>
  </item_root>
  <item_root>
    <child>content 02</child>
  </item_root>
</itens>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<itens>
  <item_root id="item01" name="Item 01">
    <child>content 01</child>
  </item_root>
  <item_root id="item02" name="Item 02">
    <child>content 02</child>
  </item_root>
</itens>
<?php
    $files= array(
      'xmlitens/file1.xml',
      'xmlitens/file2.xml'
    );
    
    $dom = new DOMDocument();
    $itens = $dom->createElement('itens');
    
    foreach ($files as $filename) {
      $fileaddDom = new DOMDocument();
      $fileaddDom->load($filename);
        $itemroot = $dom->createElement('item_root');
      if ($fileaddDom->documentElement) {
        foreach ($fileaddDom->documentElement->childNodes as $node) {
          $itemroot->appendChild(
            $dom->importNode($node, TRUE)
          );
        }
      }
      $itens->appendChild($itemroot);
    }
    $dom->appendChild($itens);
?>

内容01
内容02
但它应该是这样的:

<?xml version="1.0"?>
<itens>
  <item_root>
    <child>content 01</child>
  </item_root>
  <item_root>
    <child>content 02</child>
  </item_root>
</itens>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<itens>
  <item_root id="item01" name="Item 01">
    <child>content 01</child>
  </item_root>
  <item_root id="item02" name="Item 02">
    <child>content 02</child>
  </item_root>
</itens>
<?php
    $files= array(
      'xmlitens/file1.xml',
      'xmlitens/file2.xml'
    );
    
    $dom = new DOMDocument();
    $itens = $dom->createElement('itens');
    
    foreach ($files as $filename) {
      $fileaddDom = new DOMDocument();
      $fileaddDom->load($filename);
        $itemroot = $dom->createElement('item_root');
      if ($fileaddDom->documentElement) {
        foreach ($fileaddDom->documentElement->childNodes as $node) {
          $itemroot->appendChild(
            $dom->importNode($node, TRUE)
          );
        }
      }
      $itens->appendChild($itemroot);
    }
    $dom->appendChild($itens);
?>

内容01
内容02
我的合并代码如下所示:

<?xml version="1.0"?>
<itens>
  <item_root>
    <child>content 01</child>
  </item_root>
  <item_root>
    <child>content 02</child>
  </item_root>
</itens>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<itens>
  <item_root id="item01" name="Item 01">
    <child>content 01</child>
  </item_root>
  <item_root id="item02" name="Item 02">
    <child>content 02</child>
  </item_root>
</itens>
<?php
    $files= array(
      'xmlitens/file1.xml',
      'xmlitens/file2.xml'
    );
    
    $dom = new DOMDocument();
    $itens = $dom->createElement('itens');
    
    foreach ($files as $filename) {
      $fileaddDom = new DOMDocument();
      $fileaddDom->load($filename);
        $itemroot = $dom->createElement('item_root');
      if ($fileaddDom->documentElement) {
        foreach ($fileaddDom->documentElement->childNodes as $node) {
          $itemroot->appendChild(
            $dom->importNode($node, TRUE)
          );
        }
      }
      $itens->appendChild($itemroot);
    }
    $dom->appendChild($itens);
?>


有什么简单的方法可以做到这一点吗?

在我贴出问题后,答案奇迹般地出现在我眼前

以下是我找到的解决方案:

$files= array(
  'xmlitens/file1.xml',
  'xmlitens/file2.xml'
);

$dom = new DOMDocument();
$itens = $dom->createElement('itens');

foreach ($files as $filename) {
  $fileaddDom = new DOMDocument();
  $fileaddDom->load($filename);

  //This is the line that solves everything.
  $node = $fileaddDom->getElementsByTagName("item_root")->item(0);

  if ($fileaddDom->documentElement) {
     $itens->appendChild( $dom->importNode($node, true) );
  }
}
$dom->appendChild($itens);

Header('Content-type: text/xml');
print_r($dom->saveXML());

在我发布了这个问题之后,答案奇迹般地出现在我眼前

以下是我找到的解决方案:

$files= array(
  'xmlitens/file1.xml',
  'xmlitens/file2.xml'
);

$dom = new DOMDocument();
$itens = $dom->createElement('itens');

foreach ($files as $filename) {
  $fileaddDom = new DOMDocument();
  $fileaddDom->load($filename);

  //This is the line that solves everything.
  $node = $fileaddDom->getElementsByTagName("item_root")->item(0);

  if ($fileaddDom->documentElement) {
     $itens->appendChild( $dom->importNode($node, true) );
  }
}
$dom->appendChild($itens);

Header('Content-type: text/xml');
print_r($dom->saveXML());