gpt4 book ai didi

PHP SimpleXMLElement 不对实体进行引号

转载 作者:行者123 更新时间:2023-12-02 01:09:57 27 4
gpt4 key购买 nike

我正在编写一个 PHP 脚本来生成一些 xml 文档,但我在使用 SimpleXML 和引号时遇到了一些问题。

如果我有这样的代码:

$xml = new SimpleXMLElement('<myxml />');
$xml->addChild('title','My Feed');
$xml->addChild('description','Entity data here - &amp; &quot; &apos;');

如果我打印 $xml 对象然后我得到这个:

print_r($xml);
SimpleXMLElement Object
(
[title] => My Feed
[description] => Entity data here - & " '
)

似乎一旦进入对象,它就会使实体变回各自的角色。但是,当我在对象上调用 asXML() 以获取 XML 时,它会向我显示:

echo $xml->asXML();
<?xml version="1.0"?>
<myxml>
<title>My Feed</title>
<description>Entity data here - &amp; " '</description>
</myxml>

它使 & 变回实体,但似乎将引号保留为字符。它不应该将它们全部转换为实体吗?

最佳答案

"'如果它们位于属性值内,则它们只是 XML 中的特殊字符。在元素的文本内容中," 的含义没有歧义。或 ' ,因为要查找的下一个特殊标记是 <开始一个开始或结束标签。

所以 <foo bar="hello "world"" />是无效的 XML,<foo>hello "world"</foo>不是,因此不需要转义。

(仅仅因为它不是必需的,并不意味着它不是可能的,所以对于为什么 SimpleXML 至少不保留你自愿放在那里的实体。)

关于PHP SimpleXMLElement 不对实体进行引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18342017/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com