我正在制作一个播客生成器,我已经切换到使用XML dom,非常酷的东西。最后的障碍是链接和外壳元素。
link元素被视为html链接,并且机箱不是自动关闭的。相反,它产生以下
<link />
<enclosure></enclosure>
出于RSS目的,它应该是
<link></link>
<enclosure/>
这是使用xml dom的原始原因,它现在可以正确呈现xml文件,但我还没有找到如何创建rss / xml有效标记以附加到现有文件。 Thx提前。
更新:这是我目前正在处理的代码。 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);
答案 0 :(得分:0)
搬离:
document.createElement
为:
newFeed.createElement
修复了使用enclosure标记的自解决问题,但是这样做是因为它只创建了自闭项标记,尽管它还修复了pubDate中的大写问题。看来我需要找到一种方法来设置元素/节点/对象类型,但我还没有找到方法。
我发现创建一个文本节点然后将其附加到新创建的元素会将自闭标签更改为完整标签。