我使用C#Console从多个来源读取了多个Feed,我有这个代码,我可以从源代码加载XML:
XmlDocument doc = new XmlDocument();
doc.Load(sourceURLX);
XElement xdoc = XElement.Load(sourceURLX);
如何获取附件网址并显示为变量?
答案 0 :(得分:0)
如果我理解你的问题(我在这里做了一个很大的假设) - 你想从根(或'封闭')标签中选择一个名为'url'的属性?
您可以在此处使用XPath查询。请考虑以下XML:
<?xml version="1.0" encoding="utf-8"?>
<root url='google.com'>
<inner />
</root>
您可以使用以下代码检索“google.com”:
String query = "/root[1]/@url";
XmlDocument doc = new XmlDocument();
doc.Load(sourceURLX);
String value = doc.SelectSingleNode(query).InnerText;
有关XPath语法的更多信息,请参见here。
修改:正如您在评论中所述,您正在使用以下XML:
<item>
<description>
</description>
<enclosure url="blablabla.com/img.jpg" />
</item>
因此,您可以使用以下XPath查询检索网址:
/item[1]/enclosure[1]/@url
答案 1 :(得分:0)
使用下面的xml
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>title</title>
<link>https://www.link.com</link>
<description>description</description>
<item>
<title>RSS</title>
<link>https://www.link.com/xml/xml_rss.asp</link>
<description>description</description>
<enclosure url="https://www.link.com/media/test.wmv"
length="10000"
type="video/wmv"/>
</item>
</channel>
</rss>
通过阅读属性
,您将获得url
var document = XDocument.Load(sourceURLX);
var url = document.Root
.Element("channel")
.Element("item")
.Element("enclosure")
.Attribute("url")
.Value;
获取多个网址
var urls = document.Descendants("item")
.Select(item => item.Element("enclosure").Attribute("url").Value)
.ToList();
使用foreach
循环
foreach (var item in document.Descendants("item"))
{
var title = item.Element("title").Value;
var link = item.Element("link").Value;
var description = item.Element("description").Value;
var url = item.Element("enclosure").Attribute("url").Value;
// save values to database
}