ポッドキャストの取得
ポッドキャストサイトのRSSをXMLで取得し、各号の音声ファイルを一度に取得する。
とりあえず、XMLを取得する。
/*using System.Xml;*/ public XmlDocument GetRSSXML(string readPath) { XmlDocument xmlDocument = new XmlDocument(); try { //readPathのURLでXMLを取得する。 xmlDocument.Load(readPath); xmlData.Document = xmlDocument; } catch (System.IO.IOException ioex) { throw ioex; } catch (XmlException xex) { throw xex; } catch (Exception exc) { throw exc; } return xmlDocument; }
音声ファイルの場所は、ItemタグのEnclosureタグの中にあったので、
XmlNodeListクラスを駆使して、Itemタグのデータを取得する。
(今回はすべてのItemタグのデータを取得する。)
/*using System.Xml;*/ public XmlNodeList GetNodeListItem(XmlDocument argXmlDocument) { XmlNodeList nodeListRss = argXmlDocument.Document.SelectNodes("rss"); XmlNodeList nodeListChannel = nodeListRss.Item(0).SelectNodes("channel"); XmlNodeList nodeListItem = nodeListChannel.Item(0).SelectNodes("item"); return nodeListItem; }
最後に、EnclosureタグのURLを取得すればOKだが、URLがEnclosureタグのなかに入り込んでしまっている。
こんな感じ↓
<enclosure type="audio/mpeg" length="0000" url="https://XXXXX.net/image/XXXXX.mp3"/>
今回は、一度EnclosureタグをHTMLのなかに入れて、GetElementsByTagNameで引っ張り出す方法を使用してみる。
/*using System.Windows.Forms;*/ public string GetPodcastURL(XmlNode node/*XmlNodeListをForEachして取得*/) { WebBrowser documentText = new WebBrowser(); documentText.DocumentText = ""; HtmlDocument doc = documentText.Document.OpenNew(true); XmlNodeList enclosureListItem = node.SelectNodes("enclosure"); doc.Write("<html><body>" + node.SelectNodes("enclosure")[0].OuterXml + "</body></html>"); HtmlElementCollection htmlElement = doc.GetElementsByTagName("enclosure"); string PodcastURL = htmlElement[0].GetAttribute("url"); return PodcastURL; }
以上で取得ができた。