我注意到,在SimpleXMLElement
包含这些 CDATA 标记的文档上使用时,内容始终为NULL
. 我该如何解决?
另外,很抱歉在这里发送有关 XML 的垃圾邮件。我一直试图让一个基于 XML 的脚本工作几个小时......
<content><![CDATA[Hello, world!]]></content>
如果您搜索“SimpleXMLElement cdata”,我在 Google 上尝试了第一次点击,但没有成功。
我注意到,在SimpleXMLElement
包含这些 CDATA 标记的文档上使用时,内容始终为NULL
. 我该如何解决?
另外,很抱歉在这里发送有关 XML 的垃圾邮件。我一直试图让一个基于 XML 的脚本工作几个小时......
<content><!
我注意到,在SimpleXMLElement
包含这些 CDATA 标记的文档上使用时,内容始终为NULL
. 我该如何解决?
另外,很抱歉在这里发送有关 XML 的垃圾邮件。我一直试图让一个基于 XML 的脚本工作几个小时......
<content><![CDATA[Hello, world!]]></content>
如果您搜索“SimpleXMLElement cdata”,我在 Google 上尝试了第一次点击,但没有成功。
您可能没有正确访问它。您可以直接输出它或将其转换为字符串。(在此示例中,强制转换是多余的,因为 echo 无论如何都会自动执行)
$content = simplexml_load_string(
'<content><![CDATA[Hello, world!]]></content>'
);
echo (string) $content;
// or with parent element:
$foo = simplexml_load_string(
'<foo><content><![CDATA[Hello, world!]]></content></foo>'
);
echo (string) $foo->content;
你可能会有更好的运气LIBXML_NOCDATA
:
$content = simplexml_load_string(
'<content><![CDATA[Hello, world!]]></content>'
, null
, LIBXML_NOCDATA
);
您可能没有正确访问它。您可以直接输出它或将其转换为字符串。(在此示例中,强制转换是多余的,因为 echo 无论如何都会自动执行)
$content = simplexml_load_string(
'<content><![CDATA[Hello, world!]]></content>'
);
echo (string) $content;
// or with parent element:
$foo = simplexml_load_string(
'<foo><content><![CDATA[Hello, world!]]></content></foo>'
);
echo (string) $foo->content;
你可能会有更好的运气LIBXML_NOCDATA
:
$content = simplexml_load_string(
'<content><![CDATA[Hello, world!]]></content>'
, null
, LIBXML_NOCDATA
);
LIBXML_NOCDATA
是函数的可选第三个参数simplexml_load_file()
。这将返回将所有 CDATA 数据转换为字符串的 XML 对象。
$xml = simplexml_load_file($this->filename, 'SimpleXMLElement', LIBXML_NOCDATA);
echo "<pre>";
print_r($xml);
echo "</pre>";
这对我有用:
echo trim($entry->title);
这对我来说很完美。
$content = simplexml_load_string(
$raw_xml
, null
, LIBXML_NOCDATA
);
何时使用LIBXML_NOCDATA
?
我在将 XML 转换为 JSON 时添加了这个问题。
$xml = simplexml_load_string("<foo><content><![CDATA[Hello, world!]]></content></foo>");
echo json_encode($xml, true);
/* prints
{
"content": {}
}
*/
访问 SimpleXMLElement 对象时,它获取 CDATA :
$xml = simplexml_load_string("<foo><content><![CDATA[Hello, world!]]></content></foo>");
echo $xml->content;
/* prints
Hello, world!
*/
我使用是有意义的,LIBXML_NOCDATA
因为json_encode
不要访问 SimpleXMLElement 来触发字符串转换功能,我猜是__toString()
等价的。
$xml = simplexml_load_string("<foo><content><![CDATA[Hello, world!]]></content></foo>", null, LIBXML_NOCDATA);
echo json_encode($xml);
/*
{
"content": "Hello, world!"
}
*/