Как создать элемент ссылки rss / xml, используя JavaScript - PullRequest
0 голосов
/ 02 февраля 2012

Я работаю над генератором подкастов, и я переключился на использование 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);

1 Ответ

0 голосов
/ 01 октября 2015

Переезд из:

document.createElement

до:

newFeed.createElement

исправляет проблему самозакрытия с помощью тега enclosure, но делает это потому, что не создает ничего, кроме самозакрывающихся тегов, хотя также устраняет проблему использования заглавных букв в pubDate Кажется, мне нужно найти способ установить тип элемента / узла / объекта, но я еще не нашел способ.

Я обнаружил, что создание текстового узла и добавление его во вновь созданный элемент изменит самозакрывающийся тег на полный тег.

...