我正在修改由其他库生成的 XML 文件的内容。我正在使用 PHP (5.3.10) 进行一些 DOM 修改并重新插入替换节点。
我正在使用的 XML 数据有"
;在进行操作之前的元素,我想保留这些元素http://www.w3.org/TR/REC-xml/ http://www.w3.org/TR/REC-xml/当我完成修改后。
但是我在 PHP 更改时遇到问题"
元素。看我的例子。
$temp = 'Hello "XML".';
$doc = new DOMDocument('1.0', 'utf-8');
$newelement = $doc->createElement('description', $temp);
$doc->appendChild($newelement);
echo $doc->saveXML() . PHP_EOL; // shows " instead of element
$node = $doc->getElementsByTagName('description')->item(0);
echo $node->nodeValue . PHP_EOL; // also shows "
Output
<?xml version="1.0" encoding="utf-8"?>
<description>Hello "XML".</description>
Hello "XML".
这是 PHP 错误还是我做错了什么?我希望不必在每个字符位置都使用 createEntityReference。
类似问题:PHP XML 实体编码问题 https://stackoverflow.com/questions/9279195/php-xml-entity-encoding-issue
编辑:作为显示 saveXML 不应转换的示例"
实体就像&
其行为正常。这个 $temp 字符串实际上应该被输出,因为它最初是在 saveXML() 期间与实体一起输入的。
$temp = 'Hello "XML" &.';
$doc = new DOMDocument('1.0', 'utf-8');
$newelement = $doc->createElement('description', $temp);
$doc->appendChild($newelement);
echo $doc->saveXML() . PHP_EOL; // shows " instead of element like &
$node = $doc->getElementsByTagName('description')->item(0);
echo $node->nodeValue . PHP_EOL; // also shows " &
Output
<?xml version="1.0" encoding="utf-8"?>
<description>Hello "XML" &.</description>
Hello "XML" &.