我开发了一个桌面 AIR 应用程序,它将数据在本地保存为 XML 文件。当用户单击一个按钮时,xml 内容被发布到一个 PHP 应用程序,在该应用程序中处理数据(插入或更新)。
问题是,当我发布一些包含 & 或 > 等 html 实体的数据时,不会解析 xml 内容。
我正在使用这个类来解析 xml 内容: https ://sites.google.com/site/floweringmind/home
这是输入:
<companie_ps>
<denCompanie>Company & Friends</denCompanie>
<email>abc@abc.ro</email>
</companie_ps>
这是想要的结果:
Array
(
[0] => Array
(
[denCompanie] => Company & Friends
[email] => abc@abc.ro
)
)
这是实际结果:
Array
(
[0] => Array
(
[denCompanie] => Array
(
[@content] => Company
)
)
)
错误消息:第 5 行第 28 列(字节索引 63)处的 XML 解析错误 68“XML_ERR_NAME_REQUIRED”。
编辑:问题来自于帖子将 xml 标签内容中的 html 实体转换为实际字符的事实。因此,我使用正则表达式将特殊字符替换为它们的 html 实体。这是代码,以防有人需要它:
function _handle_match($match)
{
return '<' . $match[1] . '>' . htmlentities($match[2]) . '</' . $match[3] . '>';
}
$pattern = "/\<(.*)\>(.*?)\<\/(.*)\>/imU";
$xml = preg_replace_callback($pattern, '_handle_match', $xml);