如何解析youtube xml不使用youtube api
本文关键字:youtube api xml 何解析 | 更新日期: 2023-09-27 18:17:55
我想让用户在我的Facebook应用程序发布YouTube视频。任何用户都可以在输入文本框中放入YouTube链接。这种行为就像在他们的Facebook墙上发布视频一样。应用程序从链接中提取视频id,并创建一个不同的YouTube链接。
例如:链接为:http://www.youtube.com/watch?v=JBWd_yJPbr8&feature=related
id为:JBWd_yJPbr8
,请求变为 http://gdata.youtube.com/feeds/api/videos/JBWd_yJPbr8
using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
{
XmlWriterSettings ws = new XmlWriterSettings();
ws.Indent = true;
using (XmlWriter writer = XmlWriter.Create(output, ws))
{
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
writer.WriteStartElement(reader.Name);
break;
case XmlNodeType.Text:
writer.WriteString(reader.Value);
break;
case XmlNodeType.XmlDeclaration:
case XmlNodeType.ProcessingInstruction:
writer.WriteProcessingInstruction(reader.Name, reader.Value);
break;
case XmlNodeType.Comment:
writer.WriteComment(reader.Value);
break;
case XmlNodeType.EndElement:
writer.WriteFullEndElement();
break;
}
}
}
}
这种情况是抛出异常:
case XmlNodeType.Element:
writer.WriteStartElement(reader.Name);
元素类型无效
使用Json。Net中,您可以将返回的json响应解析为:
(我把?alt=json
附加到你的url)
System.Net.WebClient wc = new System.Net.WebClient();
string s = wc.DownloadString("http://gdata.youtube.com/feeds/api/videos/JBWd_yJPbr8?alt=json");
JObject JObj = (JObject)JsonConvert.DeserializeObject(s);
var entry = JObj["entry"];
Console.WriteLine("TITLE: " + entry["title"]["$t"]);
Console.WriteLine("DESC : " + entry["media$group"]["media$description"]["$t"]);
foreach (var thumbnail in entry["media$group"]["media$thumbnail"])
{
Console.WriteLine(thumbnail["url"]);
}
您试过这个吗:http://www.codeproject.com/KB/cs/youmanager.aspx?display=Print这是一个很好的例子
xml没有任何问题-它解析得很好。问题是你写xml的方式。
代码writer.WriteStartElement(reader.Name);
不工作,reader.Name
返回一个字符串,如"app:control"-你不能在元素名称有冒号。
xml中标记名中有冒号,这是因为冒号前的位表示标记属于哪个名称空间。
如果你替换行:
case XmlNodeType.Element:
writer.WriteStartElement(reader.Name);
break;
case XmlNodeType.Element:
writer.WriteStartElement(reader.Prefix, reader.LocalName, reader.NamespaceURI);
break;
您的代码应该可以正常运行并解析XML。
您将发现输出的xml不是您想要的,因此代码仍然需要一些工作。