如果小于符号后没有空格,则不显示小于和大于符号之间的XML文本

时间:2015-11-26 08:23:32

标签: php xml

在尝试显示从XML文件中提取的小于和大于符号中包含的某些文本时,我注意到了一种奇怪的行为。

尝试以下示例:

class painter_t : public i_painter_t, public std::enable_shared_from_this<painter_t>
{
public:
    static std::shared_ptr<painter_t> create() { return std::make_shared<painter_t>(); }
}

正如您可能注意到的,如果小于符号后没有空格,则不显示文本之间的文本,只显示小于1和小于1的符号。

问题是我正在处理的XML文件恰好在小于和大于符号之间包含一些文本,而在小于符号之后没有任何空格。顺便说一句,如果你在浏览器中查看源代码(Ctrl-U),文本会正确显示:

$xml = '<doc>
    <one>&lt;&lt;Hello&gt;&gt; "Hello" inside less than and greater than symbols will not be printed</one>
    <two>&lt;&lt; Hello&gt;&gt; "Hello" is printed because there is a space after "&lt;" </two>
</doc>';

$simple = simplexml_load_string($xml);

echo "<pre>";
    print_r($simple);
echo "</pre>";

echo "This works fine: &lt;&lt;Hello&gt;&gt;";

1 个答案:

答案 0 :(得分:1)

它已打印,但未在浏览器中显示,因为它将其解释为html标记。对于您打印的所有节点,您需要使用htmlspecialchars 转义html字符。