C# 如何在不使用youtube api的情况下解析youtube xml
我想让我的Facebook应用程序中的用户发布YouTube视频。 任何用户都可以在输入文本框中放置YouTube链接。这种行为与在Facebook墙上发布视频完全相同。 应用程序从链接中提取视频id并创建不同的YouTube链接。C# 如何在不使用youtube api的情况下解析youtube xml,c#,asp.net,facebook,asp.net-mvc-3,youtube,C#,Asp.net,Facebook,Asp.net Mvc 3,Youtube,我想让我的Facebook应用程序中的用户发布YouTube视频。 任何用户都可以在输入文本框中放置YouTube链接。这种行为与在Facebook墙上发布视频完全相同。 应用程序从链接中提取视频id并创建不同的YouTube链接。 例如,如果链接为:则id为:JBWd_yJPbr8,请求为comeshttp://gdata.youtube.com/feeds/api/videos/JBWd_yJPbr8 问题是解析返回的XML。这不是标准的XML,或者至少我还没有使用标准的XML解析器让它工作
例如,如果链接为:
则id为:
JBWd_yJPbr8
,请求为comeshttp://gdata.youtube.com/feeds/api/videos/JBWd_yJPbr8
问题是解析返回的XML。这不是标准的XML,或者至少我还没有使用标准的XML解析器让它工作。如何解析此XML?我需要一个缩略图,标题和描述
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响应解析为:
(我将?alt=json
添加到您的url)
使用,您可以将返回的json响应解析为:
(我将?alt=json
添加到您的url)
xml没有问题——它解析得很好。问题在于您编写xml的方式 代码
writer.writeStarteElement(reader.Name)当reader.Name
返回类似“app:control”的字符串时,code>不起作用-元素名称中不能有冒号
如果xml在标记名中有冒号,这是因为冒号前的位指示标记所属的命名空间
如果更换管路:
case XmlNodeType.Element:
writer.WriteStartElement(reader.Name);
break;
与
您的代码应该能够很好地运行和解析XML
但是,您会发现输出的xml不是您想要的,因此代码仍然需要一些工作。xml没有问题,它解析得很好。问题在于您编写xml的方式
代码writer.writeStarteElement(reader.Name)当reader.Name
返回类似“app:control”的字符串时,code>不起作用-元素名称中不能有冒号
如果xml在标记名中有冒号,这是因为冒号前的位指示标记所属的命名空间
如果更换管路:
case XmlNodeType.Element:
writer.WriteStartElement(reader.Name);
break;
与
您的代码应该能够很好地运行和解析XML
您会发现输出的xml不是您想要的,因此代码仍然需要一些工作。使用(XmlReader=XmlReader.Create(new StringReader(xmlString))…使用(XmlReader=XmlReader.Create(new StringReader(xmlString)))…@user750487-如果这回答了您的问题,请考虑将其标记为已接受的答案,请单击tick@user750487-如果这回答了你的问题,请考虑把它标记为被接受的答案,点击滴答声谢谢!但是我需要在这里使用ajax请求case@user750487AJAX什么意思?严格意义上的xml?为什么?我的错误:)JSon非常适合这种情况。我已经用过这个代码了。工作很完美。谢谢!谢谢但是我需要在这里使用ajax请求case@user750487AJAX什么意思?严格意义上的xml?为什么?我的错误:)JSon非常适合这种情况。我已经用过这个代码了。工作很完美。谢谢!
case XmlNodeType.Element:
writer.WriteStartElement(reader.Prefix, reader.LocalName, reader.NamespaceURI);
break;