首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有效( &)

是否有效( &)
EN

Stack Overflow用户
提问于 2013-08-02 22:41:17
回答 1查看 31.4K关注 0票数 4

我们从各种来源获得了大量的xml数据。utf是8。

我们注意到,其中一些似乎具有&的双重编码。A & B标记中的&&A & B的形式出现。(更正自原始帖子是&&)

这造成了一些麻烦,因为大多数XML组件都不喜欢它。

它有效吗?删除这些的最好方法是什么?我们使用VB.Net 2008

EN

回答 1

Stack Overflow用户

发布于 2014-08-13 04:47:53

&是“有效的”,但你是否想使用它是另一个问题。

如果您正在用XML编写文档,那么&将用来表示一个“与”符号。如果您的XML文档描述的内容本身也是以类似的方式编码的,那么该内容在逻辑上可以包含一个&本身。这可能会在XML中产生一个&

例如,假设您有描述一组用户的XML,包括一个支持HTML的“签名”字段:

代码语言:javascript
复制
<users>
 <user username="jsmith" ...>
  ...
  <signature type="text/html">
   John Smith's Heating And Plumbing
  </signature>
</users>

如果John Smith希望在他的签名中使用&而不是And,那么它将是...

代码语言:javascript
复制
  <signature type="text/html">
   John Smith's Heating &amp; Plumbing
  </signature>

为了使...where解析器满意,&被编码为&amp;

想一想在HTML电子邮件中包含签名的情况。解析器将把&amp解码成&。如果签名被直接转储到电子邮件中,这将导致消息的源中出现一个未转义的"&“实体。

但是,如果XML包含&amp;amp;,那么在XML解析时,它将变成&amp;。然后,它将作为正确转义的HTML包含在电子邮件中。

要实现同样的转义,一种更具可读性的方法可能是:

代码语言:javascript
复制
  <signature type="text/html">
   <![CDATA[John Smith's Heating &amp; Plumbing]]>
  </signature>

上面假设签名包括HTML编码的实体,这些实体被进一步编码到文档中的XML中。这是明显的双重编码的来源。例如,如果签名应该只包含纯文本,那么就只有一种编码--从纯文本到&amp;的编码。因此,从&amp;amp;的角度来看,&amp;和XML都是“有效的”,而在实践中,这将取决于要编码到XML文档中的数据的规范。

(编写XML模式时的第三种选择是使用XML名称空间,以允许包含的HTML在不使用双重编码的情况下包含;这将具有允许对其进行验证的额外好处,但是在实践中对HTML内容应用严格的XML样式验证是一个令人头疼的问题。例如,在XHTML上推广和标准化的失败尝试。)

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

https://stackoverflow.com/questions/18019716

复制
相关文章

相似问题

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