【发布时间】:2022-01-11 00:37:24
【问题描述】:
经过数小时的代码调试后,我发现 simplexml_load_string() 似乎默默地删除了节点值中的所有子实体。为了演示这个问题,我做了一个小 PHP 脚本:
#!/usr/bin/php
<?php
$xml = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<channel>
<element name="headline">
<p>Line 1<br class="HardReturn"/>Line 2</p>
<p>This is <b>bold</b> text</p>
</element>
</channel>
XML;
libxml_use_internal_errors(true);
$xml = simplexml_load_string($xml, "SimpleXMLElement");
$errors = libxml_get_errors();
print_r($errors);
var_dump($xml);
在 shell 中运行时,我得到以下输出:
Array
(
)
object(SimpleXMLElement)#1 (1) {
["element"]=>
object(SimpleXMLElement)#2 (2) {
["@attributes"]=>
array(1) {
["name"]=>
string(8) "headline"
}
["p"]=>
array(2) {
[0]=>
string(12) "Line 1Line 2"
[1]=>
string(13) "This is text"
}
}
}
知道我做错了什么吗?
【问题讨论】: