使用php生成xml文件,但不显示&符号

时间:2016-02-13 21:24:17

标签: php xml dom

我的php代码生成xml文件但是在url中没有显示&符号的行。下面是php代码

$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');

2 个答案:

答案 0 :(得分:0)

你必须逃避&#34;它。尝试使用:&amp;而不只是&

答案 1 :(得分:0)

url with&符号”的行未显示,因为$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>