1

我开发了一个桌面 AIR 应用程序,它将数据在本地保存为 XML 文件。当用户单击一个按钮时,xml 内容被发布到一个 PHP 应用程序,在该应用程序中处理数据(插入或更新)。

问题是,当我发布一些包含 & 或 > 等 html 实体的数据时,不会解析 xml 内容。

我正在使用这个类来解析 xml 内容: https ://sites.google.com/site/floweringmind/home

这是输入:

<companie_ps>
  <denCompanie>Company &amp; 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);
4

0 回答 0