Как работать со специальными символами в URL внутри XML - PullRequest
4 голосов
/ 03 декабря 2010

У меня есть элемент XML, URL которого является одним из его дочерних элементов, например:
http://maps.google.com/FortWorth&Texas,more+url;data

При разборе этого у меня возникают две проблемы:
1.) Символ ( & ) прерывает весь синтаксический анализ, если только он не заменен на & amp (который прерывает URL)
2.) Запятая (, ) пытается отправить мой парсер следующему дочернему элементу, что приводит к неполному URL.

Что я могу сделать, чтобы исправить это?
Я использую Javascript и PHP.

Ответы [ 2 ]

12 голосов
/ 03 декабря 2010

Замена & на & не должна нарушать URL.Вы пропустили;?

Лучшее решение - заключить его в тег CDATA:

<![CDATA[ <a href="http://maps.google.com/FortWorth&Texas,more+url;data" rel="noreferrer">http://maps.google.com/FortWorth&Texas,more+url;data</a> ]]>

, который указывает синтаксическому анализатору XML обрабатывать его как тексти не разбирать &.

1 голос
/ 03 декабря 2010

Существуют определенные символы, которые недопустимы в XML - вам нужно «экранировать» их в документе xml.

Эти символы и их "экранированные" версии:

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