【发布时间】:2020-02-21 20:08:13
【问题描述】:
需要使用 DOMDocument 来构造一本书,其中包含已加载和附加的章节。每章将存储在单独的 xml 文件中。下面将创建根书并附加第一个子章节_1。我知道“foreach”循环永远不会加载任何其他章节,因为它是为第 1 章硬编码的。
目的是解决问题,使用 DOMDocument 来处理正确的标签包装。我知道在这种情况下我可以对所有章节使用 PHP 包含,并在开始和结束时包含根目录(作为包装器)。
问题:
为了能够追加越来越多的章节,我需要在 for 循环中进行哪些更改?我需要先指定一个数组并执行“foreach”循环来遍历数组吗?
我的代码:
文件:merge.php
<?php
$book = new DOMDocument();
$book->load('1_build_block_(book).xml');
$chapter_1 = new DOMDocument();
$chapter_1->load('2_build_block_(chapter_1).xml');
$chapter_2 = new DOMDocument();
$chapter_2->load('3_build_block_(chapter_2).xml');
// chapter_3, chapter_4, etc...
/**
* Merge chapters into book.
*/
foreach ($chapter_1->childNodes as $child) {
$book->documentElement->appendChild(
$book->importNode($child, TRUE)
);
}
echo $book->saveXML();
$book->saveHTMLFile("result.xml");
文件:1_build_block_(book).xml
<book></book>
文件:2_build_block_(chapter_1).xml
<chapter_1></chapter_1>
文件:3_build_block_(chapter_2).xml
<chapter_2></chapter_2>
结果:
<book>
<chapter_1></chapter_1>
</book>
想要的结果:
<book>
<chapter_1></chapter_1>
<chapter_2></chapter_2>
</book>
【问题讨论】:
标签: xml domdocument php-7.3