如何处理 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.) (&) 符号会破坏整个解析,除非用 & 替换(这会破坏 url) 2.) 逗号 (,) 尝试将我的解析器发送到下一个孩子,导致 url 不完整。
我能做些什么来解决这个问题? 我正在使用 javascript 和 php。
【问题讨论】:
【参考方案1】:某些字符在 XML 中无效 - 您需要在 xml 文档中“转义”这些字符。
这些字符及其“转义”版本是:
> >
< <
& &
' '
" "
【讨论】:
这是正确的,但您应该提供如何编码它们的示例,例如检索它们时使用 htmlentities() 和 html_entity_decode()。 @El Yobo - 抱歉,我不是 PHP 程序员 :)【参考方案2】:将&amp;
替换为&amp;
不应破坏网址。你漏掉了;?
更好的解决方案是您应该将其包装在 CDATA 标记中:
<![CDATA[ @987654321@ ]]>
这告诉 XML 解析器将其视为文本而不解析 &。
【讨论】:
这实际上是最好的解决方案。 +1! 这是悲剧。 XML 应该是由有效元素和属性组成的结构化数据。 CDATA 让程序员变得懒惰。它基本上告诉 XML 解析器,不要费心去解析这个,这可能无效,忽略它。 +1 很棒的解决方案,在网上找不到更好的解决方案。 @Dmitri:在我的场景中,普通用户输入 url 到 XML 文件,我只从中读取,那么它是完美的。以上是关于如何处理 XML 中 URL 中的特殊字符的主要内容,如果未能解决你的问题,请参考以下文章
密码中有特殊的字符IOS如何处理 IOS中URL包含中文参数的问题
iOS 如何处理传递给 AFHTTPSessionManager GET 方法的空格或特殊字符?