XML解析错误

时间:2011-09-27 18:38:01

标签: php xml

我有一个有效 XML。

它要求我将整个元数据记录视为元数据元素“dataxml”的值,其中换行符(和百分号)用百分号表示(即“百分比转义”)

所以我做了以下

注意:它只询问了以下百分比:\ n,\ r,:和%所以我只是str_replaced那些

$input .= 'dataxml: ' . str_replace(array(chr(hexdec('3A')),chr(hexdec('25')),chr(hexdec('0A')),chr(hexdec('0D'))),array('%3A', '%25', '%0A', '%0D'), $xmlfile) . "\n";

但它会弹出以下错误:

400 error:'dataxml': XML parse error: xmlns: URI http%253A//dataxml.org/schema/kernel-2.1 is not absolute

任何人都可以指出我做错了吗?

1 个答案:

答案 0 :(得分:1)

http://中的冒号被替换两次:首先冒号被%3A替换,然后替换中的百分比被%25替换。

您可以使用函数strtr()来避免替换已经替换的字符串部分。

例如,

$input  .= 'dataxml: ' . strtr($xmlfile, array(":" => "%3A", "%" => "%25", "\n" => "%0A", "\r" => "%0D")) . "\n";