0

私はポッドキャストジェネレーターに取り組んでおり、非常にクールなものである XML dom の使用に切り替えました。最後のハードルは、リンクとエンクロージャーの要素です。

リンク要素は html リンクとして扱われ、エンクロージャーは自己閉鎖ではありません。代わりに、以下を生成します

 <link />
 <enclosure></enclosure>

RSS の目的では、次のようにする必要があります。

<link></link>
<enclosure/>

これが xml dom を使用する最初の理由であり、xml ファイルを適切にレンダリングするようになりましたが、rss/xml 有効なマークアップを作成して既存のファイルに追加する方法をまだ見つけていません。事前にt​​hx。

更新:これは私が現在取り組んでいるコードです。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 に答える