我正在创建一个原子XML数据包作为REST服务请求的一部分。 但是,当XML中某个标记的值包含注册商标的符号时,会出现问题。
XML通过WebRequest作为“PUT”发送。当问题字符在XML中时,完整的XML包不会进入服务器。数据包被截断,我在服务器上看到错误“开始标记中出现意外的EOF”。
我注意到服务器上请求的第一部分(在被截断之前)包含问题字符“®”。我希望看到“®”。
我认为我只需要担心XML中的这些字符:
双引号:“
单引号:'
小于:<
大于>
&符号:&如何逃避或处理我的字符串,以便我可以发送任何字符而没有问题?
答案 0 :(得分:1)
Xml会以这种方式欺骗你。并不是说某些字符是无效的,而是大片的unicode是defined as valid,并且除此之外的任何东西都是被禁止的。在没有更复杂逻辑的情况下实现这一目标的诀窍是使用CDATA section。
答案 1 :(得分:0)
首先,你的术语很松散。你是什么意思“其中一个标签的价值”?是元素名称或文本内容中的违规字符吗?
如果必须,可以通过转义非ASCII字符来解决问题,例如“注册商标符号”变为®
。但是,这不应该是必要的。最好解决问题的根本原因,即文档的创建者及其接收者对其编码有不同的想法。您的配置中存在导致此错误传达的内容,我无法知道它可能是什么。