這是驅使我堅果,在網上有很多類似的問題,但我找不到合適的解決方案。實體聲明在PHP生成的XML文檔( —等)
我在php中創建一個xml文檔,作爲對ajax請求的響應發送。答案看起來是這樣的:
<?xml version="1.0" encoding="iso-8859-1"?>
<response>
<status>success</status>
<message> —</message>
</response>
該標籤將包含比這更有意義的信息,但它是像那些給我這個問題的實體。
,其生成XML是下面的PHP代碼:
header("Content-Type: text/xml");
$dom = new DOMDocument('1.0', 'iso-8859-1');
$dom->formatOutput = true;
$response_node = $dom->createElement("response");
$dom->appendChild($response_node);
$response_node->appendChild($dom->createElement('status', 'success'));
$response_node->appendChild($dom->createElement('message', " &mdash"));
echo $dom->saveXML();
return;
以上所示的XML成功返回到發出呼叫的JavaScript功能,但是,當它試圖解析XML文檔,它失敗。
如果我嘗試驗證使用this validator我得到以下錯誤的XML:
This page contains the following errors:
error on line 5 at column 15: Entity 'nbsp' not defined
—
造成同一問題的實體。
我想我可能需要找到一種方法,把像這樣的XML:
<!ENTITY name "entity_value">
我不知道怎麼雖然做到這一點,或者如果它是正確的方式去做。我不是正確的道路嗎?如果是這樣,我該怎麼做?如果不是,解決這個問題的正確方法是什麼?
我不是手動放置這些實體,它們是在我追加一個包含這些元素的textnode時創建的,文本是從數據庫中查詢的。有沒有一個函數將命名實體轉換爲它們的數字對等體? – Matthew 2011-05-12 01:04:37
您可以使用'$ trans = get_html_translation_table(HTML_ENTITIES)'將字符翻譯錶轉換爲實體並執行類似'$ table [$ value] ='&#'的操作。 ord($ key)。 ';';'爲'$ trans'中的每個鍵/值構建您實際需要的表。但是,該表中缺少一些實體,例如'—',因此您可能需要爲所有可能的實體維護一個表。 – scoffey 2011-05-12 01:29:47