Xml Is&;amp;amp;有效的

Xml Is&;amp;amp;有效的,xml,Xml,我们从各种来源获得大量xml数据。utf是8 我们注意到,有些似乎是双重编码的&&&位于A&B 作为A&;amp;B。(从原来的过账中更正为&) 这会引起一些悲伤,因为大多数XML组件都不喜欢它 它有效吗?什么是去除这些的最好方法?我们使用VB.NET2008&;amp是“有效的”,但是否要使用它是另一个问题 如果您正在用XML编写文档,那么&将用于表示符号AND。如果您的XML文档描述的内容本身是以类似的方式编码的,例如HTML,那么该内容在逻辑上可能包含一个&a

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

我们注意到,有些似乎是双重编码的
&
<代码>&&位于
A&B
作为
A&;amp;B
。(从原来的过账中更正为&)

这会引起一些悲伤,因为大多数XML组件都不喜欢它

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

&;amp
是“有效的”,但是否要使用它是另一个问题

如果您正在用XML编写文档,那么
&将用于表示符号AND。如果您的XML文档描述的内容本身是以类似的方式编码的,例如HTML,那么该内容在逻辑上可能包含一个
&本身。这可能导致出现
&;amp

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

<users>
 <user username="jsmith" ...>
  ...
  <signature type="text/html">
   John Smith's Heating And Plumbing
  </signature>
</users>
…其中
编码为
&以使XML解析器满意

想象一下HTML电子邮件中包含签名的情况。XML解析器将
&
解码为
&
。如果签名被直接转储到电子邮件中,这将导致消息源中出现一个“&”实体

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

实现相同转义的一种更具可读性的方法可能是

  <signature type="text/html">
   <![CDATA[John Smith's Heating &amp; Plumbing]]>
  </signature>


这不是
的双重编码。那将是
&;amp-您不会有第二个
&
仍然出现。如果您双重解码
&&然后是的,您将遇到问题,因为第二次解码将尝试处理无效的
&
。您的标题和问题相互矛盾。是哪一个?你说得对,进来的是&;amp;只为&。所以这是无效的,因为发送方所做的是对&.&=&;=>&;amp;因此,目前我们只是在做一个替换(“&;”,“&;”),程序不会读取每个字段,而是转储要进行XSLT转换的XML。那么你有没有看到其他的解决方案或潜在的问题???蒂姆,标题是正确的。我看不到收缩。请解释。一些配置不当(或可能有故障)的所见即所得编辑器会将“&”转换为“&;”,然后下次再将“&;”转换为“&;”,然后再次转换为“&;”等。如果有帮助,我认为这可能是导致原始问题的原因。我们不会创建此问题。我们从外部系统得到它。或者如果我们得到&;amp;在A&B中,哪个是A&;B不是A&B那么我猜它是无效的,因为真正的结果应该是A&B。我在上面解释的是如何
&;amp可能合法出现。如果您的上游数据提供者正在生成一个XML文件,在该文件中对HTML内容进行编码,如上所述,则
&;amp是合法的。如果您的上游数据源提供的是XML编码的HTML,而您期望的是纯文本,那么期望值的差异就是问题所在。我的怀疑是,您需要澄清XML元素应该包含HTML(&应该是
&;amp;
)还是纯文本(&应该是
&;amp;
)。然后问题是,您的上游提供商提供的是(很可能)XML编码的HTML,而您希望的是XML编码的纯文本。您可能会在
中看到类似的问题,“那么我们需要的每个XML文档都需要双重解析?”--是的,如果您正在交换在其内容中编码HTML标记的XML。第一个解析由XML解析器(
&;amp;
&;
)完成,第二个解析由web浏览器(
&;
&
)完成。同样,问题是XML中的元素应该包含text/plain(您似乎期望的)还是text/html(您可能从上游获得的)@QuickBooksDev,我已经尽了最大的努力解释了它,但我认为我们在兜圈子。长话短说:你需要向你的数据源澄清该元素中的数据应该包含编码为XML的HTML还是编码为XML的纯文本。这将澄清你是否应该期望
&
出现在您的XML作为
&;amp;
&;
。在纯XML级别上,两者都是有效数据。
  <signature type="text/html">
   <![CDATA[John Smith's Heating &amp; Plumbing]]>
  </signature>