2016-02-13 28 views
0

我的php代碼生成xml文件,但在url中有&字符的行沒有顯示。以下是php代碼使用php生成xml文件,但&字符不顯示

$dom = new DOMDocument('1.0','UTF-8'); 
$dom->formatOutput = true; 

$root = $dom->createElement('journal'); 
$dom->appendChild($root); 

$journal_metadata = $dom->createElement('journal_metadata'); 
$dom->appendChild($journal_metadata); 

$issue_doi = $dom->createElement('doi', '11'); 
$issue_doi_data->appendChild($issue_doi); 

$issue_resource = $dom->createElement('resource', 'http://localhost/fo/issues.php?jid=1&issueID=155'); 
$issue_doi_data->appendChild($issue_resource); 


echo '<xmp>'. $dom->saveXML() .'</xmp>'; 
$dom->save('result.xml') or die('XML Create Error'); 
+0

的可能的複製[CakePHP的XML實用程序庫觸發DOM文檔警告(http://stackoverflow.com/questions/22956330/cakephp-xml-當我將其更改爲$ issue_resource = $ dom-> createElement('resource','http://localhost/fo/issues.php?jid = 1 & issueID = 155')時 – ThW

回答

0

您將不得不「逃脫」它。嘗試使用:&amp;而不僅僅是&

+0

); $ issue_doi_data-> appendChild($ issue_resource);它顯示 http://localhost/fo/issues.php?jid = 1 & issueID = 155 ali79

0

具有「URL以符號」的線不顯示,因爲$issue_doi_data變量,它應包含URL未聲明,而不是附加在初始文檔$dom
其次,在得到的警告消息的情況下,「無端接實體引用」你可以使用轉義提供的值htmlentities()(或htmlspecialchars())。
更改您的代碼如下所示:

$dom = new \DOMDocument('1.0','UTF-8'); 
$dom->formatOutput = true; 

$root = $dom->createElement('journal'); 
$dom->appendChild($root); 

$journal_metadata = $dom->createElement('journal_metadata', '...'); 
$root->appendChild($journal_metadata); 

// modify this line with your prefered name and value 
$issue_doi_data = $dom->createElement('doi_data', ''); 

$issue_doi = $dom->createElement('doi', '11'); 
$issue_doi_data->appendChild($issue_doi); 

$issue_resource = $dom->createElement('resource', htmlspecialchars('http://localhost/fo/issues.php?jid=1&issueID=155')); 
$issue_doi_data->appendChild($issue_resource); 
$root->appendChild($issue_doi_data); 

// save xml into file 
$dom->save('result.xml') or die('XML Create Error'); 
// outputting xml file content 
echo '<xmp>'. html_entity_decode(file_get_contents('result.xml')) .'</xmp>'; 

// the output: 
<?xml version="1.0" encoding="UTF-8"?> 
    <journal> 
     <journal_metadata>...</journal_metadata> 
     <doi_data> 
     <doi>11</doi> 
     <resource>http://localhost/fo/issues.php?jid=1&issueID=155</resource> 
     </doi_data> 
    </journal> 
+0

感謝您的意見。我希望我的輸出顯示,而不是& – ali79

+0

@ ali79,檢查我的更新。保存文件,然後輸出它 – RomanPerekhrest

+0

感謝您的意見。它正在工作,但journal和journal_metadata的結束標記不顯示在輸出中。請幫我解決。謝謝 – ali79