我们从各种来源获得了大量的xml数据。utf是8。
我们注意到,其中一些似乎具有&的双重编码。A & B标记中的&&以A & B的形式出现。(更正自原始帖子是&&)
这造成了一些麻烦,因为大多数XML组件都不喜欢它。
它有效吗?删除这些的最好方法是什么?我们使用VB.Net 2008
发布于 2014-08-13 04:47:53
&是“有效的”,但你是否想使用它是另一个问题。
如果您正在用XML编写文档,那么&将用来表示一个“与”符号。如果您的XML文档描述的内容本身也是以类似的方式编码的,那么该内容在逻辑上可以包含一个&本身。这可能会在XML中产生一个&。
例如,假设您有描述一组用户的XML,包括一个支持HTML的“签名”字段:
<users>
<user username="jsmith" ...>
...
<signature type="text/html">
John Smith's Heating And Plumbing
</signature>
</users>如果John Smith希望在他的签名中使用&而不是And,那么它将是...
<signature type="text/html">
John Smith's Heating & Plumbing
</signature>为了使...where解析器满意,&被编码为&。
想一想在HTML电子邮件中包含签名的情况。解析器将把&解码成&。如果签名被直接转储到电子邮件中,这将导致消息的源中出现一个未转义的"&“实体。
但是,如果XML包含&amp;,那么在XML解析时,它将变成&。然后,它将作为正确转义的HTML包含在电子邮件中。
要实现同样的转义,一种更具可读性的方法可能是:
<signature type="text/html">
<![CDATA[John Smith's Heating & Plumbing]]>
</signature>上面假设签名包括HTML编码的实体,这些实体被进一步编码到文档中的XML中。这是明显的双重编码的来源。例如,如果签名应该只包含纯文本,那么就只有一种编码--从纯文本到&的编码。因此,从&amp;的角度来看,&和XML都是“有效的”,而在实践中,这将取决于要编码到XML文档中的数据的规范。
(编写XML模式时的第三种选择是使用XML名称空间,以允许包含的HTML在不使用双重编码的情况下包含;这将具有允许对其进行验证的额外好处,但是在实践中对HTML内容应用严格的XML样式验证是一个令人头疼的问题。例如,在XHTML上推广和标准化的失败尝试。)
https://stackoverflow.com/questions/18019716
复制相似问题