我正在从数组(来自数据库)中使用simplexml_load_string()
读取XML。
在XML包含引号之前一切正常,simplexml开始报告XML解析错误。
"
更改为"
- >解析器错误。"
,如\"
- >解析器错误。 '
代替"
- >一切都很好,但我想要"
!""
的部分纳入CDATA
- >解析器错误了!`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
答案 0 :(得分:0)
尝试替换其XML等效实体的引号:"
str_replace('"', '"', $xml);
答案 1 :(得分:0)
"
,CDATA
和"
可以按预期使用simplexml。
我的错误:代码替换了xml文件中的substr %vorfall%
。此子字符串出现在节点文本(替换ok)和属性var="%vorfall%"
内。
当属性加倍""
时发生了解析错误:var=""some-replaced-content""
。
谢谢大家的帮助!