xml - 使用 DOMDocument 的简单 xml 文档中的 & 符号

标签 xml character-encoding simplexml special-characters domdocument

事情是这样的,我正在从我的网页数据库中恢复数据并创建一个 xml,其唯一目的是将该数据导入到我的本地数据库中。我这样做是因为本地数据库中的数据非常具体,我不想用无用的信息填充它,所以我所做的是:

<?php
ini_set( 'default_charset', 'UTF-8' );

$ID = $_GET['ID'];

$personInfo = GetPersonSoftwareByID($ID); //this is a function that i created on my own

//xml section

$domTree = new DOMDocument('1.0', 'UTF-8');
$rootXML = $domTree->createElement( 'XML' );
$rootXML = $domTree->appendChild($rootXML);

$personalSoftware = $domTree->createElement( 'PERSON_SOFTWARE' );
$personalSoftware = $rootXML->appendChild($personalSoftware);

$soft = $domTree->createElement('SOFTWARE');
$level = $domTree->createElement('LEVEL');

$soft->nodeValue = $softwares[software];// here the value is = 'Plant&ID'
$level->nodeValue = $softwares[level];

$soft = $personalSoftware ->appendChild($soft);
$level = $personalSoftware ->appendChild($level);

header('Content-type: text/xml; charset=UTF-8');
header('Content-Disposition: attachment; filename="test.xml");

echo $domTree->saveXML();
?>

但是当我尝试创建 xml 时,会出现以下结果: 警告:main() [function.main]:第 xx 行中未终止的实体引用 ID

我尝试过使用 htmlentities 并创建了 xml,但是当我尝试使用 simplexml_load_string 导入时,我收到一大堆警报,但不是使用 & 而是使用其他字符(例如 à 和 ³)

有没有办法像在数据库中一样修复或保存 xml ?顺便说一句,网页DB和本地DB中存储的数据都是西类牙语信息

提前致谢!

最佳答案

这是一个bug在 PHP 中,影响 DOMNode::$nodeValueDOMDocument::createElement()afaik 甚至 SimpleXML。

您可以通过创建文本节点并附加它来轻松避免它。

$dom = new \DOMDocument();
$dom
  ->appendChild($dom->createElement('company'))
  ->appendChild($dom->createTextNode('A & B & C'));

echo $dom->saveXml();

您仍然可以将 $nodeValue 设置为空字符串来删除节点的内容,但我不会使用它来设置文本值。

关于xml - 使用 DOMDocument 的简单 xml 文档中的 & 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25435677/

相关文章:

java - Android 自定义按钮监听器没有被调用

c# - 在xml中一次添加多个节点

java - XmlPullParser getAttributeValue 总是返回 null

php - 使用 PHP 过滤和排序 XML

php - SimpleXML:将XML属性值添加到数组

php - 获取 SimpleXMLElement 以在输出中包含编码

php - 使用 SimpleXML 加载远程 URL

PHP bing api html内容翻译响应显示为纯文本

c++ - 我应该如何正确使用 g++ 的 -finput-charset 编译器选项来编译非 UTF-8 源文件?

php - 使用 PHP 对电子邮件 header 进行 UTF-8 字符编码