PHP - SimpleXML 添加新父级

发布于 2024-10-15 18:16:21 字数 1142 浏览 2 评论 0原文

我有一个 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 或任何其他方式如何实现这一点?

感谢您的所有帮助。

I have an XML file (example below) and it is sitting somewhere on the net. When I import it using SimpleXML like so $sXML = @simplexml_load_file( $url );, the contents of the files are converted in the simple XMl objects.

<?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>

I would like to add a new set of parents. One at root level and the other that contains "item" so that it looks like the XML file below:

<?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>

How is this possible using SimpleXML or any other way?

Thanks for all the help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

羁客 2024-10-22 18:16:21

请注意,作为示例给出的输入 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();

Note that the input XML given as example is invalid. It is mandatory to have a single root node. That said, here is a possible solution:

$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();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文