2010-02-24 75 views
0

如何编码将在“查找字符串”中的&号(&)不会破坏XML的“xml-safe”URL?XML安全URLEncoding?

比如:

www.somedomain.com/SomePage.aspx?SomeParam=SomeValue & SomeParam2 = SomeVal

+2

如果能帮助您指定为什么?我无法想象为什么某个不喜欢做某事的人(比如用字符串连接构建XML)需要担心这一点。我并不是说你这样做只是为了知道你没有这样做,或者有点奇怪。 – AnthonyWJones 2010-02-24 16:35:54

+0

我正在使用接受xml的API,其中一个字段是url。我需要在文档中传递的URL中指定动态参数。 – Achilles 2010-02-24 16:37:30

回答

4

简短的答案是对URL进行编码,就像文档中的任何其他文本一样。如果你替换字符如下时不会出问题:

& -> & 
' -> ' 
" -> " 
< -> &lt; 
> -> &gt; 

(和任何人读取该文件与符合解析器会得到正确的,即未编码,背课文)。

然而,我会回应安东尼的评论:你为什么认为你需要担心这个?任何明智的XML编写系统都应该采用您想要表示的文本并自己进行编码(就像解析器将撤销编码一样)。你的应用程序只需要处理未编码的文本,它应该依靠XML编写库来处理字符编码并保持格式良好。否则你冒险being called a bozo。它看起来像XmlTextWriter是进行所有必要更改的.net API。

+0

我正在使用一个自定义的TextWriter类来处理我的类的序列化。当我将它切换到XMLTextWriter时,XML序列化正确。 – Achilles 2010-02-24 22:13:27

+0

发布到wcf服务时,这不起作用。 – user20358 2012-12-24 18:12:55