我开发了一个桌面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);