Если у меня есть текст вроде
Название: БЕЗОПАСНОЕ И ЗВУК Исполнитель: СТОЛИЧНЫЕ ГОРОДА
Он отлично работает, но как только программа вводит текст, как
Название: SAFE & SOUND художник: СТОЛИЧНЫЕ ГОРОДА
сценарий не будет отображать его. Если я попытаюсь выйти из строки, она превратит пробелы в %20, но все еще ничего не может сделать с помощью & и не сможет вообще отобразить эту вещь.
Примечание. Мы не можем изменить способ рендеринга файла xml, а также то, что он отображает, технически недействительным. XML (без объявления или кодировки символов, а также не удаляются). Мы должны работать с тем, что нам дано.
вот часть скрипта:
jQuery(document).ready(function($)
{
function getSong() {
var song= $.ajax({
type: "GET",
url: "/dalet/nowplaying2.xml",
dataType: "xml",
async : false,
cache : false,
}).responseXML;
$(song).find('Current').each(function(){
var title = $(this).find("titleName").text();
var artist = $(this).find("artistName").text();
$("#nowsongtitle").html(title);
$("#nowsongartist").html(artist);
});
}
setInterval(function() {
getSong();
}, 5000);
});
Вот как выглядит XML, выходящий из программы (Dalet 5.1)
<BroadcastMonitor>
<updated>2013-11-30T13:53:25</updated>
<stationName>Unknown</stationName>
<Current>
<startTime>2013-11-30T13:53:25</startTime>
<titleId>8839</titleId>
<itemCode></itemCode>
<itemReference></itemReference>
<titleName>Safe And Sound</titleName>
<artistName>Capital Cities</artistName>
<albumName>Hitzone 67 (CD2)</albumName>
</Current>
<Next>
<startTime>2013-11-30T13:56:36</startTime>
<itemId>1000000627:7514</itemId>
<titleId>8827</titleId>
<itemCode></itemCode>
<itemReference></itemReference>
<titleName>L'amour</titleName>
<artistName>Karim Ouellet</artistName>
<albumName>Fox</albumName>
</Next>
</BroadcastMonitor>
Похоже, ваш XML-документ неправильно закодирован. Вам либо нужно избежать амперсанда:
<titleName>Safe & Sound</titleName>
или поместить содержимое этого тега в раздел CDATA:
<titleName><![CDATA[Safe & Sound]]></titleName>
Если вы не можете изменить сам документ xml, вам может потребоваться выполнить замену строки в xml, возвращаемом с сервера, прежде чем использовать декодер jQuery xml для его анализа. Если вы посмотрите на документацию jQuery.ajax, там есть раздел, описывающий настройку декодера ответа.