PHP - SimpleXML添加新的Parent

时间:2011-02-03 17:12:13

标签: php simplexml parent-child

我有一个XML文件(例如下面的例子),它位于网络的某个地方。当我使用像$sXML = @simplexml_load_file( $url );这样的SimpleXML导入它时,文件的内容将在简单的XMl对象中转换。

<?xml version="1.0" encoding="UTF-8"?>
<title>Test</title>
<description>Test Description</description>
<item id="500">
<title>Item Title</title>
<description>Item Description</description>
</item>
<item id="501">
<title>Item Title</title>
<description>Item Description</description>
</item>

我想添加一组新的父母。一个在根级别,另一个包含“item”,使其看起来像下面的XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<data>
<title>Test</title>
<description>Test Description</description>
<content>
<item id="500">
<title>Item Title</title>
<description>Item Description</description>
</item>
<item id="501">
<title>Item Title</title>
<description>Item Description</description>
</item>
</content>
</data>

如何使用SimpleXML或其他任何方式实现这一目标?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

请注意,作为示例给出的输入XML无效。必须具有单个根节点。也就是说,这是一个可能的解决方案:

$sXML = simplexml_load_file($url);

$nonItems = '';
$items = '';
foreach ($sXML as $child) {
    if ($child->getName() == 'item') {
        $items .= $child->asXML();
    } else {
        $nonItems .= $child->asXML();
    }
}
$xml = sprintf('<?xml version="1.0"?><data>%s<content>%s</content></data>',
        $nonItems, $items);
// echo simplexml_load_string($xml)->asXML();