“xmlParseEntityRef:无名称”警告,将 xml 加载到 php 文件中

2022-08-30 07:32:00

我正在使用php阅读xml。但是,在尝试加载 xml 时,它会显示警告列表simplexml_load_file

Warning: simplexml_load_file() [function.simplexml-load-file]: <project orderno="6" campaign_name="International Relief & Development" project in /home/bluecard1/public_html/test.php on line 3    
Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /home/bluecard1/public_html/test.php on line 3    
Warning: simplexml_load_file() [function.simplexml-load-file]: http://..../index.php/site/projects/:15: parser error : xmlParseEntityRef: no name in /home/bluecard1/public_html/test.php on line 3

Warning: simplexml_load_file() [function.simplexml-load-file]: ional Relief & Development" project_id="313" client_name="International Relief & in /home/bluecard1/public_html/test.php on line 3    
Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /home/bluecard1/public_html/test.php on line 3    
Warning: simplexml_load_file() [function.simplexml-load-file]: http://..../index.php/site/projects/:15: parser error : xmlParseEntityRef: no name in /home/bluecard1/public_html/test.php on line 3

如何纠正以删除这些警告?

(XML是从url http://..../index.php/site/projects生成的,并在测试中加载到变量中.php。我没有编写权限来索引.php)


答案 1

XML 很可能是无效的。

问题可能是“&”

$text=preg_replace('/&(?!#?[a-z0-9]+;)/g', '&amp;', $text);

将去掉“&”并将其替换为它的HTML代码版本...试一试。


答案 2

在这里找到这个...

问题:XML 解析器返回错误“xmlParseEntityRef: noname”

原因:在 XML 文本的某个地方有一个杂散的 “&”(与号字符),例如。一些文本和一些更多文本

溶液:

  • 解决方案 1:删除 & 符号。
  • 解决方案 2:对 & 符号进行编码(即将字符替换为 )。请记住在读取 XML 文本时进行解码。&&amp;
  • 解决方案 3:使用 CDATA 节(解析器将忽略 CDATA 节中的文本)。<![CDATA[一些文本和一些更多文本]]>

注意:“&”<“”>“如果处理不当,都会带来问题。


推荐