如何处理 XML 中 URL 中的特殊字符

Posted

技术标签:

【中文标题】如何处理 XML 中 URL 中的特殊字符【英文标题】:How to deal with special characters in URLs inside XML 【发布时间】:2011-05-19 11:24:07 【问题描述】:

我有一个 XML 元素,它的子元素之一是 url,例如:http://maps.google.com/FortWorth&Texas,more+url;data

解析这个时,我遇到了两个问题: 1.) (&) 符号会破坏整个解析,除非用 &amp 替换(这会破坏 url) 2.) 逗号 (,) 尝试将我的解析器发送到下一个孩子,导致 url 不完整。

我能做些什么来解决这个问题? 我正在使用 javascriptphp

【问题讨论】:

【参考方案1】:

某些字符在 XML 中无效 - 您需要在 xml 文档中“转义”这些字符。

这些字符及其“转义”版本是:

>  >
<  &lt;
&  &amp;
'   &apos;
"   &quot;

【讨论】:

这是正确的,但您应该提供如何编码它们的示例,例如检索它们时使用 htmlentities() 和 html_entity_decode()。 @El Yobo - 抱歉,我不是 PHP 程序员 :)【参考方案2】:

&amp;amp; 替换为&amp;amp; 不应破坏网址。你漏掉了;?

更好的解决方案是您应该将其包装在 CDATA 标记中:

<![CDATA[ @987654321@ ]]>

这告诉 XML 解析器将其视为文本而不解析 &。

【讨论】:

这实际上是最好的解决方案。 +1! 这是悲剧。 XML 应该是由有效元素和属性组成的结构化数据。 CDATA 让程序员变得懒惰。它基本上告诉 XML 解析器,不要费心去解析这个,这可能无效,忽略它。 +1 很棒的解决方案,在网上找不到更好的解决方案。 @Dmitri:在我的场景中,普通用户输入 url 到 XML 文件,我只从中读取,那么它是完美的。

以上是关于如何处理 XML 中 URL 中的特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

使用 SAX 解析 XML |如何处理特殊字符?

密码中有特殊的字符IOS如何处理 IOS中URL包含中文参数的问题

url中特殊字符被转义成编码后如何处理

iOS 如何处理传递给 AFHTTPSessionManager GET 方法的空格或特殊字符?

whatsapp 是如何处理特殊字符、unicode 和 emoji 的

复制到 Redshift 时,如何处理 CSV 中的特殊字符?