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

标签 php xml dom simplexml

这个:

$XML = new SimpleXMLElement("<foo />");
echo($XML->asXML());

...输出这个:

<?xml version="1.0"?>
<foo/>

但我也希望它输出编码:

<?xml version="1.0" encoding="UTF-8"?>
<foo/>

有没有办法告诉 SimpleXMLElement 包含 标签的编码属性?除了这样做:

$XML = new SimpleXMLElement("<?xml version='1.0' encoding='utf-8'?><foo />");
echo($XML->asXML());

这可行,但必须手动指定版本和编码很烦人。

为了这个问题的目的,假设我不能改用 DOMDocument。

最佳答案

你可以试试这个,但是你必须为 $xml 使用 simplexml_load_string

$xml // Your main SimpleXMLElement
$xml->addAttribute('encoding', 'UTF-8');

或者您仍然可以使用其他方式将编码添加到输出中。

简单替换

$outputXML=str_replace('<?xml version="1.0"?>', '<?xml version="1.0" encoding="UTF-8"?>', $outputXML);

正则表达式

$outputXML=preg_replace('/<\?\s*xml([^\s]*)\?>/' '<?xml $1 encoding="UTF-8"?>', $outputXML);

DOMDocument - 我知道你说过你不想使用 DOMDocument,但这里有一个例子

$xml=dom_import_simplexml($simpleXML);
$xml->xmlEndoding='UTF-8';
$outputXML=$xml->saveXML();

您可以将此代码包装到一个函数中,该函数接收一个参数 $encoding 并将其添加到

关于php - 获取 SimpleXMLElement 以在输出中包含编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/869650/

相关文章:

javascript - 在 php 表单提交 INSIDE 同一页面后显示消息

php - 如何防止axios按key排序?

php - 这样处理错误的方法在PHP中安全吗?这是惯用的吗?

android - 每个 xml 中的按钮。避免在每个 xml 中编写代码

python - 使用 Selenium 获取渲染页面的当前 HTML

php - 让用户根据 CodeIgniter 中的角色/权限访问 Controller

java - 如何使用 XMLEventReader 解析来自 XML 的注释?

xml - 解析 XML,报告未知标签/属性

javascript - 更改嵌套 div 标记中元素的 innerHTML

javascript - 我正在尝试安排我的 html/css/jquery,这样我就可以通过双击它来切换 div 的可见性