반응형
//Youtube Rss Atom형식의 XML을 파싱하는 소스
using(XmlTextReader rssReader = new XmlTextReader("Youtube URl")) 
{ 
	XmlDocument xmlDoc = new XmlDocument(); //XML 객체 생성      
	xmlDoc.Load(rssReader); //URL Load

	//Select all nodes starting with "entry"
	XmlNodeList xmlNodeList = xmlDoc.GetElementsByTagName("entry"); //XML에 entry태그의 데이터를 전부 가지고 와서 List로 만들어준다.

	//각각의 노드로 만들어서 반복문을 돌린다.
	foreach(XmlNode node in xmlNodeList) 
	{ 	
		XmlDocument innerXmlDocument = new XmlDocument(); //내부 객체를 파싱하기 위한 XmlDocument를 생성한다.
		innerXmlDocument.LoadXml(node.OuterXml); //entry 노드의 데이터를 파싱한다.

		//innerXmlDocument.GetElementsByTagName("media:title")[0].InnerText => XML 태그의 텍스트를 전부 가지고 온다.
		//innerXmlDocument.GetElementsByTagName("media:thumbnail")[0].Attributes["url"].Value 태그 안에 있는 속성의 값만 가지고 온다.

		string vYoutube_URL = innerXmlDocument.GetElementsByTagName("link")[0].Attributes["href"].Value;
		string vThumbnail_URL innerXmlDocument.GetElementsByTagName("media:thumbnail")[0].Attributes["url"].Value;
		string vTitle = innerXmlDocument.GetElementsByTagName("media:title")[0].InnerText;
		string vDescription = innerXmlDocument.GetElementsByTagName("media:description")[0].InnerText;
	}
}
반응형
[HttpPost]
public ActionResult GetRSSData(JsonData value)
{
	DataTable dt = new DataTable();
	dt = JsonConvert.DeserializeObject(value.vJsonData);
	string str_RssData = "";

	XmlDocument rssXmlDoc = new XmlDocument();
	rssXmlDoc.Load(dt.Rows[0]["Blog_URL"].ToString());

	str_RssData = rssXmlDoc.InnerXml;

	//XmlNodeList rssNodes = rssXmlDoc.SelectNodes("rss/channel/item");
	//StringBuilder rssContent = new StringBuilder();

	return this.Content(str_RssData, "text/xml");
}

 

+ Recent posts