首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML解析错误:未定义的实体-特殊字符

XML解析错误:未定义的实体-特殊字符
EN

Stack Overflow用户
提问于 2011-01-24 22:00:12
回答 3查看 12.9K关注 0票数 7

为什么XML在某些特殊字符上显示错误,而有些则没有问题?

例如,下面将创建错误,

代码语言:javascript
复制
<?xml version="1.0" standalone="yes"?>
<Customers>
    <Customer>
        <Name>L&ouml;ic</Name>
    </Customer>
</Customers>

但这没什么,

代码语言:javascript
复制
<?xml version="1.0" standalone="yes"?>
<Customers>
    <Customer>
        <Name>&amp;</Name>
    </Customer>
</Customers>

顺便说一下,我通过php - htmlentities('Löic',ENT_QUOTES)来转换特殊字符.

我怎么才能避开这一切?

谢谢。

编辑:

我发现如果我使用数字字符(如L&#243;ic ),它可以正常工作。

现在我必须找到如何使用php将特殊字符转换为数字字符!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-24 22:01:33

XML规范中定义了五个实体:&amp;&lt;&gt;&apos;&quot;

在HTML中定义的许多实体

您不能在通用XML中使用HTML中的内容。

您可以使用数字引用,但最好是将您的字符编码弄清楚(基本上可以归结为:

  • 将数据保存在UTF-8中的设置您的编辑器
  • 如果您使用编程语言处理数据,请确保它是UTF-8。
  • 如果将数据存储在数据库中,请确保数据配置为UTF-8。
  • 当您提交文档时,请确保HTTP标头指定它是UTF-8 (在XML的情况下,UTF-8是默认的,因此不指定任何内容几乎是好的)

)

票数 19
EN

Stack Overflow用户

发布于 2011-01-24 22:01:45

因为它不是内置实体,而是需要在DTD中声明的外部实体。

票数 3
EN

Stack Overflow用户

发布于 2021-12-15 01:07:59

TLDR溶液

您可以用html_entity_decode() (来源: PHP.net)来解决这个问题,就像.

代码语言:javascript
复制
$xml_line = '<description>' . html_entity_decode($description) . '</description>';

完整的,在线演示

在本演示中,我使用&rsquo;和陶德清中的一行来演示上面使用的html_entity_decode().

代码语言:javascript
复制
$title = 'The name you can say isn&rsquo;t the real name.';
$xml_title = html_entity_decode($title)
$xml_title = str_replace(['<', '>',], ['&lt;', '&gt;',], $xml_title );
$xml_line = '<title>' . $xml_title . '</title>';
print($xml_line);

不过,别忘了把那些<>字符替换回来!

工作演示沙箱

你怎么知道它起作用了?

想确认一下它是否正常工作吗?然后转到W3C,并看到上面的代码被批准为很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4787700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档