0

我正在开发一个播客生成器,我已经切换到使用 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);
4

1 回答 1

0

从:

document.createElement

至:

newFeed.createElement

修复了封闭标签的自关闭问题,但它这样做是因为它只创建自关闭标签,尽管它也修复了 pubDate 中的大写问题。看来我需要找到一种方法来设置元素/节点/对象类型,但我还没有找到方法。

我发现创建一个文本节点然后将其附加到新创建的元素会将自结束标记更改为完整标记。

于 2015-10-01T19:46:36.763 回答