如何从xml文件中删除非法字符?

时间:2009-12-17 16:55:52

标签: xml encoding character-encoding

我正在使用PHP SimpleXML方式处理我服务器上的XML文件。我只需要阅读XML的内容(我不需要修改它)所以我坚持使用简单易用的SimpleXML。但SimpleXML在读取某个XML文件时遇到问题,因为它有一些非常奇怪的字符。我收到以下错误:

Warning: simplexml_load_file() [function.simplexml-load-file]: data/data.xml:348: parser error : PCDATA invalid Char value 3 in C:\xampp\htdocs\VMP\xintel\analyzer.php on line 54

Warning: simplexml_load_file() [function.simplexml-load-file]: Jardin al fte. Hall de recepcion, amplio living comedor. ocina comedor diario c in C:\xampp\htdocs\VMP\xintel\analyzer.php on line 54

我无法控制XML文件的内容,因此我无法阻止这些字符被添加到文件中。另外,我不知道如何解决这个问题。该文件应该以utf-8编码。所以我尝试了从UTF-8到ISO-8859-1的解码,反之亦然,但没有发生任何事情。

有人可以帮帮我吗?我应该尝试更改编码吗?我应该尝试删除这些字符吗?什么?

编辑:stangre字符都是盒子绘图字符(请参阅:http://en.wikipedia.org/wiki/Box-drawing_characters

3 个答案:

答案 0 :(得分:5)

我有一个从不受信任的来源接收XML的应用程序,其中许多都向我发送了未编码的&符号。为了解决这个问题,我有一个中间过滤器,可以执行单个线性传递,并在必要时删除/编码字符。我不知道你是否可以这样做,但我认为这是一个非常合理的解决方案。

答案 1 :(得分:2)

也许您可以通过Tidy传递输入以使其格式正确。在将文件提供给SimpleXML之前进行预处理的一个简单步骤。

例如,tidy::repairFile看起来很有希望。

答案 2 :(得分:0)

通常,XML文件的所有字符都被解释,除非它们进入CDATA部分=> link text

如果不是这样,您的XML无效。