1
我有一個從URL解析XMLXML錯誤:無效字符
$parser=xml_parser_create();
function char($parser,$data)
{
echo $data;
}
xml_set_character_data_handler($parser,"char");
$fp=fopen("http://example.com","r");
while ($data=fread($fp,4096))
{
xml_parse($parser,$data,feof($fp)) or
die (sprintf("XML Error: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
通過上述fopen的調用返回的XML是這樣的一隻的Xml沒有任何編碼設置在頂部下面的PHP代碼。 上述代碼正在輸出XML錯誤:瀏覽器上第1008行的字符無效。
<entries> //root element
<entry>
<TITLE><![CDATA[xxxx yyyyyyyyyy]]></TITLE>
</entry>
<entry>
<TITLE><![CDATA[xxxx Gold… yyyyyyyyyy]]></TITLE>//this is line no 1008 that returns invalid character error and script stops
</entry>
</entries>
我認爲這可能是由於橢圓形,因爲當我保存XML在本地文件在記事本++回來再喂該XML文件上面的解析器運行良好。
我想直接從URL運行這個XML而不是保存到目錄中的,因爲這將是一個開銷我不need.Thanks
我現在沒有任何對服務器的控制權。因此,設置標題信息是不可能的。雖然我可以在從服務器獲取xml數據之後添加<?xml encoding ='UTF-8'?>,然後將數據傳遞給解析器。是否有任何其他方式可以使此工作成爲可能。 – 2014-10-19 07:44:18
檢查這兩個項目,我還添加了最後一個建議;我還沒有使用XML Parser函數,因爲我發現SimpleXML更簡單了! – miken32 2014-10-19 07:55:42
我做了utf8_decode(),它工作。謝謝你幫助我並擴大社區。 – 2014-10-19 08:03:45