2012-02-02 90 views
0

我正在製作一個podcast生成器,並已切換到使用XML dom,非常酷的東西。最後的障礙是鏈接和封閉元素。如何使用javascript創建rss/xml鏈接元素

鏈接元素被視爲HTML鏈接,並且該閉包不是自動關閉。相反,它會產生以下

<link /> 
<enclosure></enclosure> 

對於RSS的目的應該是

<link></link> 
<enclosure/> 

這是當初之所以使用XML DOM,它也使XML文件正確,但現在我仍然還沒有找到如何創建rss/xml有效標記以追加到現有文件。 Thx提前。

更新:這是我正在使用的代碼。 xml被加載到無腳本中,因此可以通過主題依賴的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

你應該顯示你用來產生這個的代碼... – JAAulde 2012-02-02 18:35:59

+0

我的歉意。我正在使用的代碼已添加到OP中。 – Richard 2012-02-02 19:01:58

+0

現在,機箱元素可以正常工作,但鏈接元素仍然會生成html鏈接元素。 – Richard 2012-02-02 19:03:55

回答

0

移動:

document.createElement 

到:

newFeed.createElement 

修復自行閉合的問題與外殼的標籤,但它確實是因爲它創造什麼,但自行閉合的標籤,雖然它還修復了pubDate中的大寫問題。看來我需要找到一種方法來設置元素/節點/對象類型,但我還沒有找到方法。

我發現創建一個文本節點,然後將它附加到新創建的元素會將自閉標籤更改爲完整標籤。