Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用XElement C控制台获取机柜url_C#_Xpath_Xelement - Fatal编程技术网

C# 如何使用XElement C控制台获取机柜url

C# 如何使用XElement C控制台获取机柜url,c#,xpath,xelement,C#,Xpath,Xelement,我使用C控制台从许多源读取多个提要,我有以下代码从源加载XML: XmlDocument doc = new XmlDocument(); doc.Load(sourceURLX); XElement xdoc = XElement.Load(sourceURLX); 如何获取附件url并显示为变量?如果我正确理解了您的问题,我在这里做了一个很大的假设-您想从根或“封闭”标记中选择一个名为“url”的属性吗 您可以在这里使用XPath查询。考虑下面的XML: <?xml version=

我使用C控制台从许多源读取多个提要,我有以下代码从源加载XML:

XmlDocument doc = new XmlDocument();
doc.Load(sourceURLX);
XElement xdoc = XElement.Load(sourceURLX);

如何获取附件url并显示为变量?

如果我正确理解了您的问题,我在这里做了一个很大的假设-您想从根或“封闭”标记中选择一个名为“url”的属性吗

您可以在这里使用XPath查询。考虑下面的XML:

<?xml version="1.0" encoding="utf-8"?>
<root url='google.com'>
    <inner />
</root>
<item>
    <description>
    </description>
    <enclosure url="blablabla.com/img.jpg" />
</item>
可以找到有关XPath语法的更多信息

编辑:如您在评论中所述,您正在使用以下XML:

<?xml version="1.0" encoding="utf-8"?>
<root url='google.com'>
    <inner />
</root>
<item>
    <description>
    </description>
    <enclosure url="blablabla.com/img.jpg" />
</item>
使用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 urls = document.Descendants("item")
                   .Select(item => item.Element("enclosure").Attribute("url").Value)
                   .ToList();
使用foreach循环


你能澄清这个问题吗?你所说的附件url是什么意思?如果合适的话,您的XML示例也可能有助于包含在问题中。我正在阅读提要,然后我获取值并将其作为字符串放入数据库,现在我需要阅读附件中的文章图像,将图像的url放入表中。因为使用控制台,我将提要和外接程序数据库作为字符串读取。标题、说明、文章URL和文章图像。现在我的问题是将附件标签中的URL作为字符串,可能是因为选择是可能的,或者其他一些想法。也许现在您可以清楚地理解我的问题xdoc.Elementitem.Elementenclosure.Attributeurl。Value@Fabio-var encImg1=xdoc.Elementitem.Elementenclosure.Attributeurl.V‌​价值;这一行为url where exist enclosure tag返回空值:我在这里做了一个很大的假设-为什么不让OP在之前澄清一下;如果答案不合适,我会删除:谢谢,我是编程新手,我的英语不太好。但是谢谢你。我尝试使用您的答案,但不使用带有附件的XML提要中的标记,因为附件标记是include item标记,因此etc@MisterXP我很难理解您,但我已更新了我的答案。如果它解决了您的问题,请将答案标记为已接受@泰菲-哈罗,我正在测试这段代码,但我做了一些修改。var node=doc.selectsinglenoders/channel/item/enclosure;var encImg=node.Attributes[url].Value;取值,但始终只取第一个链接,不取所有10篇文章的不同图像。因为我一个接一个地保存到数据库,在这一刻,所有10篇文章只保存了第一篇文章的图片。如何去下一个,下一个,下一个等等?这在控制台应用程序中可能吗?我发现了这个错误:错误CS1061“XmlDocument”不包含“Root”的定义,并且找不到接受“XmlDocument”类型的第一个参数的扩展方法“Root”。是否缺少using指令或程序集引用?是的,它可以工作。使用var document=XDocument.LoadsourceURLXIt是可行的,但对于所有10篇文章,我都会得到相同的图像,从第一篇文章中,我得到的图像是第一张图像的10倍。如何逐个获得不同文章的所有图像URL?这也可以,并创建URL列表,但如果我尝试使用foreach,foreach会继续,我不能一个接一个地给每个人取值。如何逐个取值,?例如,首先,继续编码,保存到数据库,然后返回到secund并继续等等?非常感谢。
var urls = document.Descendants("item")
                   .Select(item => item.Element("enclosure").Attribute("url").Value)
                   .ToList();
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
}