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

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

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

我能做些什么来解决这个问题?
我正在使用 Javascript 和 PHP。

【问题讨论】:

    标签: php javascript xml url special-characters


    【解决方案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 文件,我只从中读取,那么它是完美的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    相关资源
    最近更新 更多