2012-02-02 12 views
0

ポッドキャストジェネレータで作業していますが、XML domを使って非常にクールなものに切り替えました。最終的なハードルは、リンクとエンクロージャの要素です。javascriptを使用してrss/xmlリンク要素を作成するには

リンク要素はHTMLリンクとして扱われており、エンクロージャーは自己閉鎖ではありません。代わりに、それは

<link></link> 
<enclosure/> 

これは、XML DOMを使用するため、元の理由だった、それは正しくxmlファイルをレンダリングんが、私はまだ、まだ持っているべきであるRSSの目的のために、次の

<link /> 
<enclosure></enclosure> 

を生成しますrss/xml有効なマークアップを作成して既存のファイルに追加する方法を見つけることができます。あらかじめThx。

更新:これは私が現時点で作業しているコードです。 xmlはnoscriptにロードされるので、エンドユーザー向けのテーマに依存するjavascriptでアクセスし、SEOの目的で検索エンジンで索引付けすることができます。 CMSモードでは、処理のためにxmlHTTPrequest経由でPHPスクリプトに送られるまで、私はホルダーとして使用します。

document.createElement 

:から移動

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

+0

謝罪します。私が作業しているコードがOPに追加されました。 – Richard

+0

エンクロージャー要素は正常に機能しますが、リンク要素はまだhtmlリンク要素を生成します。 – Richard

答えて

0

newFeed.createElement 

は、エンクロージャのタグで自己閉鎖問題を修正しますが、それはものの、自己終了タグだけを作成していないので、それがこれを行いますpubDateでの大文字の問題も修正されています。私は要素/ノード/オブジェクト型を設定する方法を見つける必要があるようだが、私はまだ方法を見つけていない。

テキストノードを作成して新しく作成した要素に追加すると、自己終了タグが完全なタグに変更されることがわかりました。

関連する問題