在PHP DOM中加载无效的XML

时间:2011-08-05 20:35:53

标签: php xml dom

我有输入格式不正确的XML文件(即它有'&'而不是'& amp;') 当我尝试使用PHP DOM,$ doc-> load(“file.xml”)加载此XML时,它会抛出并出错并停止解析。

有没有办法加载这个未格式化的XML?并且我不能编辑源XML文件。 我确实尝试使用$ doc-> loadHTML(),但它会在整个地方抛出错误。

我想知道是否有正确的方法来执行此操作(例如加载文件内容并使用正则表达式或类似内容进行更改)

3 个答案:

答案 0 :(得分:1)

在通过$doc->validateOnParse = false;加载XML之前尝试设置$doc->loadHTML(...)

答案 1 :(得分:0)

首先,检查是导致错误的&而不是其他内容。

不管怎样,您必须修改XML才能解析它。 loadHTML中的HTML是从字符串加载的,您不能只用正确的字符替换无效字符吗?

如果您的安装支持PHP Tidy扩展(http://php.net/manual/en/book.tidy.php),您可以尝试使用它进行清理,但根据我的经验,它远非万无一失。< / p>

答案 2 :(得分:0)

如果您确定这是唯一使其无法验证的内容,那么您可以尝试将文件加载到具有file_get_contents()功能的字符串中,然后搜索&amp;通过字符串替换以将&amp;'s更改为&amp;,然后将该字符串放入simpleXML,如$xml = simplexml_load_string($cleaned_string);