我有输入格式不正确的XML文件(即它有'&'而不是'& amp;') 当我尝试使用PHP DOM,$ doc-> load(“file.xml”)加载此XML时,它会抛出并出错并停止解析。
有没有办法加载这个未格式化的XML?并且我不能编辑源XML文件。 我确实尝试使用$ doc-> loadHTML(),但它会在整个地方抛出错误。
我想知道是否有正确的方法来执行此操作(例如加载文件内容并使用正则表达式或类似内容进行更改)
答案 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更改为&
,然后将该字符串放入simpleXML,如$xml = simplexml_load_string($cleaned_string);