2011-03-31 74 views
0

当我解析XML文件时,系统会自动为各个字段生成一些<none>标签...但是,没有</none>标签。 所以,我的XML解析器给出了错误,并且不解析整个文件。< none >标签 - 使用PHP解析XML

我该如何摆脱这个错误?

$xml = simplexml_load_file($newfile3); 

<none>不是一个标签......所以,我只是想忽略这个或别的东西,如“无”替换...

+2

如果您修复无效的XML,那么你就不必来了用黑客来解析无效的XML。 – drudge 2011-03-31 21:28:26

回答

0
$newfile3 = str_replace('<none>', '&lt;none&gt;', $newfile3); 

基本上替换坏“标签”与这两个元字符被编码成实体。

+0

我仍然收到相同的错误...我检查了newfile3,它仍然有< none >标签... – Zac 2011-03-31 20:41:53

+1

您在这里输入了括号内 none /之前的空格。如果这真的存在于xml中,则必须在str_replace调用中输入完全匹配。 – 2011-03-31 21:28:30

+0

不,这不是!如果我在标签内输入NONE,本网站的编辑器不会显示任何内容! – Zac 2011-03-31 21:47:37

0

扎克,你应该首先加载该文件,然后使用代码从马克·乙

$string = str_replace('<none>', 'your_replacement', file_get_contents($newfile3)); 
$xml = simplexml_load_string($string); 

这应该做的伎俩

+0

再一次的错误是“开放和结束标签不匹配:无”......我不知道如何解决这个问题!也许它不读作为一个字符串??! – Zac 2011-03-31 21:00:02

+1

然后,也许你应该发布你的文件(pastebin.com是一个完美的地方),所以我们可以看看... – xiffy 2011-03-31 21:20:41

+0

看着你与这个问题有关的其他问题[链接](http://stackoverflow.com/q/ 5495543/209012)我想Marc是对的;在'<'和'none'之间有空格,所以拿我的代码并输入需要替换的内容; '< none >'而不是'' – xiffy 2011-03-31 21:43:12