0
$contents  = "<?xml version='1.0' ?>
        <authed>1</authed>
            <book>read</book>";

我有一个像这样的xml字符串我想在根标签内添加所有元素

像这样

$contents  = "<?xml version='1.0' ?>
        <root>
        <authed>1</authed>
            <book>read</book>
        </root>";
4

4 回答 4

1

XML 上的字符串操作就像 HTML 上的正则表达式操作一样。 这个答案可以透视它。

于 2010-02-19T13:20:25.227 回答
0

这不是有效的 XML。XML 文档只有一个根元素。无论生成什么非 XML标记汤都应该被修复,以便它输出一些有效的 XML。

否则,如果您要找麻烦,您可以使用任何类型的字符串替换。

$contents = preg_replace('#^<\\?.*?\\?>#', '$0<root>', $contents) . '</root>';
于 2010-02-19T14:03:48.790 回答
0

您可以使用 substr 提取第一部分(xml 版本)和第二部分(元素),然后重新组合

于 2010-02-19T13:22:27.287 回答
0

如果添加根元素是您唯一想做的事情,您可以这样做

$contents = str_replace("<?xml version='1.0' ?>", 
                        "<?xml version='1.0' ?><root>", 
                        $contents . '</root>');

这将用它自己加上内容内的根元素和附加的结束根标签来替换序言。但是,请记住,从技术上讲,我们只是在此处插入随机字符串,而不是节点,这意味着<root>oot><aut. 使用字符串时,尖括号没有特殊含义。我们自己定义了语义。这对于像上面这样的简单用例来说是可以的。

但是,如果您想使用节点,请考虑使用PHP 的 XML 库之一

于 2010-02-19T13:41:23.547 回答