Я работаю над генератором подкастов, и я переключился на использование XML dom, очень крутые вещи. Последнее препятствие - это звено и элементы корпуса.
Элемент ссылки обрабатывается как ссылка html, и корпус не является самозакрывающимся. Вместо этого он производит следующее
<link />
<enclosure></enclosure>
Для RSS должно быть
<link></link>
<enclosure/>
Это была первоначальная причина использования xml dom, и теперь он правильно отображает xml-файл, но мне все еще предстоит найти способ создания допустимой разметки rss / xml для добавления в существующий файл. Спасибо заранее.
Обновление: это код, с которым я работаю в данный момент. Xml загружается в noscript, поэтому к нему могут обращаться зависимые от темы javascript для конечных пользователей и индексировать поисковые системы для целей SEO. В режиме CMS я использую его в качестве держателя, пока он не будет отправлен через xmlHTTPrequest в php-скрипт для обработки.
var retFeedOptions =document.getElementsByTagName('noscript')[0].innerText;
parser=new DOMParser();
newFeed=parser.parseFromString(retFeedOptions,"text/xml");
newEntry=newFeed.createElement('item');
newXtitle=newFeed.createElement('title');
newXlink=newFeed.createElement('link');
newXdescription=newFeed.createElement('description');
newXpubdate=newFeed.createElement('pubDate');
newXguid=newFeed.createElement('guid');
newXenclosure=newFeed.createElement('enclosure');
newEntry.appendChild(newXtitle);
newEntry.appendChild(newXlink);
newEntry.appendChild(newXdescription);
newEntry.appendChild(newXpubdate);
newEntry.appendChild(newXguid);
newEntry.appendChild(newXenclosure);
var RSSchannel =newFeed.getElementsByTagName('channel')[0];
var nextItemNode =newFeed.getElementsByTagName('item')[0];
RSSchannel.insertBefore(newEntry,nextItemNode);
document.getElementsByTagName('noscript')[0].innerHTML=(new XMLSerializer()).serializeToString(newFeed);