向 SimpleXml 的 xml 文件添加编码?

发布于 2024-11-30 19:48:42 字数 382 浏览 0 评论 0原文

我有一个必须获取的外部 xml 文件,未设置编码,但我发现它的有效负载编码为 ISO-8859-1。

我知道这一点,因为如果我手动将文件编辑为encoding =“ISO-8859-1”,那么它会按预期进行处理。

我可以告诉 simplexml 在实例化 simplexml 对象时要处理什么编码吗?

附录

因为 xml 文件太脏了,我可能最终会使用 xmllint - 在这里发布给其他感兴趣的人 - 格式,以便缩进,在不存在的地方设置编码并清理坏实体(&等等)

xmllint --format --encode iso-8859-1 -o cleansed.xml dirty.xml

I have an external xml file which I have to pick up, no encoding is set but I have discovered it it's payload is encoded ISO-8859-1.

I know this because if I manually edit the file to encoding="ISO-8859-1" then it is processed as expected.

Can I tell simplexml what encoding to deal with as I instantiate the simplexml object?

Addendum

Because the xml file was so dirty I might end up using xmllint - posting here for anyone else interested - format so it is indented, set encoding where it did not exist and clean up bad entities (& and so on)

xmllint --format --encode iso-8859-1 -o cleansed.xml dirty.xml

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

唯憾梦倾城 2024-12-07 19:48:42

您可以设置 DomDocument 的编码,然后使用 simplexml_import_dom():

$dom = new DomDocument('1.0', 'iso-8559-1');
$dom->load('externalfile.xml');

if (!$dom) {
    echo 'Parsing error';
    exit;
}

$s = simplexml_import_dom($dom);

You can set the encoding for a DomDocument and then convert it to simplexml by using simplexml_import_dom():

$dom = new DomDocument('1.0', 'iso-8559-1');
$dom->load('externalfile.xml');

if (!$dom) {
    echo 'Parsing error';
    exit;
}

$s = simplexml_import_dom($dom);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文