我正在simplexml_load_string()
从数组(从数据库)读取 XML。
一切都很好,直到 XML 包含引号,simplexml 开始报告 XML 解析错误。
- 我更改
"
为"
XML 文件中的 --> 解析器错误。 "
我在 XML 中转义了\"
--> parser-error。- 我用
'
而不是"
--> 一切都很好,但我想要"
! - 所以我再次将部分与
""
intoCDATA
--> parser-error 一起包含在内!`
XML 片段:
<prepare var="%vorfall%" label="Bezeichnen Sie den Vorfall">
<![CDATA["Vorfall beim Reiten..."]]>
</prepare>
PHP 片段:
$rxml=simplexml_load_string(utf8_encode($test['tsValues']));
错误 - 使用"
而不是"
:
Warning: simplexml_load_string(): Entity: line 16: parser error : attributes construct error in /Applications/MAMP/htdocs/_testcenter/testcenter.php on line 97
Warning: simplexml_load_string(): <prepare var=""Unfall beim Reiten, Rocky geht durch"" label="Bezeichnen Sie den in /Applications/MAMP/htdocs/_testcenter/testcenter.php on line 97
Warning: simplexml_load_string(): ^ in /Applications/MAMP/htdocs/_testcenter/testcenter.php on line 97
Warning: simplexml_load_string(): Entity: line 16: parser error : Couldn't find end of Start Tag prepare line 16 in /Applications/MAMP/htdocs/_testcenter/testcenter.php on line 97
Warning: simplexml_load_string(): <prepare var=""Unfall beim Reiten, Rocky geht durch"" label="Bezeichnen Sie den in /Applications/MAMP/htdocs/_testcenter/testcenter.php on line 97
Warning: simplexml_load_string(): ^ in /Applications/MAMP/htdocs/_testcenter/testcenter.php on line 97
更新:再次检查,问题发生在这里 - PHP:
$txml=file_get_contents("$path_test/".$test['tbTestFile']);
$rxml=simplexml_load_string($test['tsValues']);
// replacing parts of $txml with content containing the famous "" from $rxml
foreach ($rxml->xpath('//prepare') as $prep) {
$txml=str_replace($prep['var'],$prep,$txml);
}
$txml=simplexml_load_string($txml); // this is line 97