Delphi xml解析器,为什么有些字符是非法的 - 但很多都不是?

时间:2016-05-04 13:07:08

标签: xml delphi xml-parsing delphi-7

我有一个非常基本的xml,为此我通过delphi 7中的自动生成器创建了一个接口。这工作正常,直到遇到一些奇怪的字符被发送到我的方式。举个例子:

<AfasGetConnector>
  <Medewerker>
    <Afstortnummer>0032123</Afstortnummer>
    <Naam>Wiaëröóíïúáäâtè</Naam>
  </Medewerker>
</AfasGetConnector>

将其拉入Firefox / IE会很快告诉您其中存在非法字符。确切地说:ë,é和ö将不被接受。其余的,完全没问题。 (即使是资本版本Ë,É和Ö也很好)

这让我很困惑。为什么这3个人是非法的,但“ä”和其他大多数人都没事?还有其他我应该担心的事吗?

整个区块都是以CDATA的形式发给我的。所以最初的转移很顺利。然而,在那之后,我需要从xml中选择单独的“Medewerker”元素。它们没有封装在CDATA中。因此问题。

1 个答案:

答案 0 :(得分:2)

  

将其拉入Firefox / IE会很快告诉您其中存在非法字符。

对我来说很好。 Firefox和IE都没有抱怨这些角色。

  

这让我很困惑。为什么这3个人是非法的,但“ä”和其他大多数人都没事?

它们根本不是非法的。 XML规范允许使用大多数 Unicode代码点(减去不可打印的控制字符,UTF-16代理和保留代码点)。您展示的所有角色都是合法的。

  

整个区块都是以CDATA的形式发给我的。所以最初的转移很顺利。然而,在那之后,我需要从xml中选择单独的“Medewerker”元素。它们没有封装在CDATA中。因此问题。

您可能会遇到XML解析器认为 XML编码为 实际编码为的XML之间的编码不匹配。但是,由于您没有提供传输的XML的原始原始字节,或者尝试加载和解析它的代码,因此无法确切知道实际发生了什么。< / p>