Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.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# 使用linq从站点地图文件中提取标题_C#_Linq_Linq To Xml - Fatal编程技术网

C# 使用linq从站点地图文件中提取标题

C# 使用linq从站点地图文件中提取标题,c#,linq,linq-to-xml,C#,Linq,Linq To Xml,是否有一种方法可以使用和LINQ来提取文件中所有siteMapNode元素的所有title属性,而不管其深度如何?任何关于如何做到这一点的例子都将不胜感激 你可以试试这样的东西 string sitemapfile = File.ReadAllText("path of web.sitemap"); XDocument doc = XDocument.Parse(sitemapfile); var elements = doc.Root.Elements("siteMapNode"); fo

是否有一种方法可以使用和LINQ来提取文件中所有
siteMapNode
元素的所有
title
属性,而不管其深度如何?任何关于如何做到这一点的例子都将不胜感激

你可以试试这样的东西

string sitemapfile = File.ReadAllText("path of web.sitemap");

XDocument doc = XDocument.Parse(sitemapfile);

var elements = doc.Root.Elements("siteMapNode");
foreach (var elem in elements) {
    if (elem.Attribute("title") != null)
         {
        //do your work
         }
XElement xelement = XElement.Load(Server.MapPath("~/web.sitemap"));
    var urlList = xelement.Descendants().Attributes()
       .Where(x => x.Name == "title")
       .Select(x => x.Value);

    foreach (string s in urlList)
    {

    }

有时,使用普通的XPath要容易得多

var doc = XDocument.Parse(contentsOfFile);
doc.XPathEvaluate("//@title");
foreach (var element in ((IEnumerable)result).Cast<XAttribute>())
{
    Console.WriteLine("{0} has value {1}", element.Name, element.Value);
}
var doc=XDocument.Parse(contentsOfFile);
xPath估价文件(“//标题”);
foreach((IEnumerable)result.Cast()中的var元素)
{
WriteLine(“{0}有值{1}”,element.Name,element.value);
}

类似于
文档。。siteMapNode@title
。我真的记不太清楚语法。好的,语法是
document….@title
,显然您必须切换到VB.NET才能使用它,所以请先这样做。