如何验证$ xmlDoc-> load($ xml);

时间:2013-10-19 08:50:19

标签: php xml domdocument

这是我的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>Title</title>
      <link>http://www.Mydomain.com</link>
      <description>Description</description>
      <managingEditor>managingEditor</managingEditor>
      <webMaster>webMaster</webMaster>
      <lastBuildDate>Sat, 19 Oct 2013 09:21:40 +0400</lastBuildDate>
      <generator>generator</generator>
      <item>
         <title>title</title>
         <link>link</link>
         <description>ATT&T</description>
         <author>author</author>
         <pubDate>25 Aug 2013 16:52:31 +0400</pubDate>
      </item>
    </channel>
</rss>

我读的是这样的:

$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);

但是我收到了这个错误:

Warning: DOMDocument::load(): EntityRef: expecting ';' in 
file:///C:/xampp/htdocs/readxml/rss.xml, line: 14 in

因为&#39; &安培; &#39; ...在描述节点

请告知

3 个答案:

答案 0 :(得分:1)

您想要更改XML。为确保您对XML文档没有任何问题,您应该在CDATA中包含& <>的字符串。

所以你的描述应该是这样的

<description><![CDATA[ATT&T]]></description>

更多详情here

更新:

自OP发布以来,他无法修改XML。

&符号替换为&amp;实体:

$xml = str_replace('&', '&amp;', $xml);

上面的行将用&amp;实体替换-all-&amp;'s。

答案 1 :(得分:0)

将ATT&amp; T替换为ATT&amp; T,因为XML中不允许使用未转义的&符号。

答案 2 :(得分:-1)

UPDATE:

libxml_use_internal_errors(true);
$xmlDoc = new DOMDocument();
if($xmlDoc->load($RSSURL->URL))
{

}else{
     echo 'XML file is not valid structure';
}