Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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# 迭代XML的所有节点并解析属性中存储的值_C#_Xml - Fatal编程技术网

C# 迭代XML的所有节点并解析属性中存储的值

C# 迭代XML的所有节点并解析属性中存储的值,c#,xml,C#,Xml,我试图遍历xml文件的所有节点,并解析存储在名为“product”的节点的“product id”属性中的值 我的代码看起来像这样 using System; using System.IO; using System.Text; using System.Xml; using System.Xml.Linq; class ReadFileFromFolder { public static void Main() { XDocument xdoc = XDoc

我试图遍历
xml
文件的所有节点,并解析存储在名为“product”的节点的“product id”属性中的值

我的代码看起来像这样

using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Linq;

class ReadFileFromFolder
{
    public static void Main()
    {
        XDocument xdoc = XDocument.Load("catalog.xml");

        foreach (XElement element in xdoc.Descendants())
        {
            if(element.Name == "product")
            {
                Console.WriteLine(element.Attributes["product-id"].Value);;   
            }
        }
    }
}
我得到的错误

projects/DotNetProjects/FilterProducts/FilterProducts/ReadFileFromFolder.cs(35,35):错误CS0021:无法将带[]的索引应用于“方法组”(CS0021)类型的表达式(FilterProducts)


c#
非常陌生,所以我可能在做一些愚蠢的事情。

尝试使用“(”访问属性。这会导致错误。请尝试下面的方法

class ReadFileFromFolder
    {
        public static void Main()
        {
            XDocument xdoc = XDocument.Load("catalog.xml");
            foreach (XElement element in xdoc.Descendants())
            {
                if(element.Name == "product"){
                    Console.WriteLine(element.Attributes("product-id").Value);;   
                }
            }
        }
    }

尝试使用“(”访问属性。这会导致错误。请尝试下面的操作

class ReadFileFromFolder
    {
        public static void Main()
        {
            XDocument xdoc = XDocument.Load("catalog.xml");
            foreach (XElement element in xdoc.Descendants())
            {
                if(element.Name == "product"){
                    Console.WriteLine(element.Attributes("product-id").Value);;   
                }
            }
        }
    }

使用Linq to Xml可以简单到:

XDocument xdoc = XDocument.Load("catalog.xml");
var productids = xdoc.Descendants("product").Select(p => p.Attribute("product-id").Value);

使用Linq to Xml可以简单到:

XDocument xdoc = XDocument.Load("catalog.xml");
var productids = xdoc.Descendants("product").Select(p => p.Attribute("product-id").Value);

“方法组”表示对象的类型至少有一个具有该名称的方法。术语中使用组是因为方法名称可以重载。“[]”只能用于索引字段和属性

ReadFileFromFolder.cs(35,35)意味着转到第35行第35列,以查找错误的最佳位置。在许多工具中,双击错误消息将带您到达该位置


您使用“[]”的地方是属性标识符。如果您查看文档(F1)或声明(F12),您会发现它实际上是一个具有一个签名(未重载)的方法组。因此,使用“(”调用它“.

方法组”表示对象的类型至少有一个具有该名称的方法。术语中使用组是因为方法名称可以重载。“[]”只能用于索引字段和属性

ReadFileFromFolder.cs(35,35)意味着转到第35行第35列,以查找错误的最佳位置。在许多工具中,双击错误消息将带您到达该位置


您使用“[]”的地方是属性标识符。如果您查看文档(F1)或声明(F12),您会发现它实际上是一个具有一个签名(未重载)的方法组。因此,请使用“()”调用它。

如果您能够解决问题,请投赞成票。如果您能够解决问题,请投赞成票