Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/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
Linq 读取根目录中具有命名空间的xml文件_Linq_C# 4.0 - Fatal编程技术网

Linq 读取根目录中具有命名空间的xml文件

Linq 读取根目录中具有命名空间的xml文件,linq,c#-4.0,Linq,C# 4.0,我试图从根元素中具有名称空间的XML文件中获取每个元素的值,但运气不佳 xml文件看起来像 我已经用linq写了一些C代码,但是没有得到任何结果 XDocument xdoc = new XDocument(); var doc = XDocument.Load(fileFullPath); XNamespace ns = "http://www.springframework.net"; var elements = from data in xdoc.Descendants(ns + "R

我试图从根元素中具有名称空间的XML文件中获取每个元素的值,但运气不佳

xml文件看起来像

我已经用linq写了一些C代码,但是没有得到任何结果

XDocument xdoc = new XDocument();
var doc = XDocument.Load(fileFullPath);
XNamespace ns = "http://www.springframework.net";

var elements = from data in xdoc.Descendants(ns + "Record")
               select new
               {
                   firstName = (string)data.Element(ns + "FirstName").Value,
                   lastName = (string)data.Element(ns + "LastName").Value,
                   id = (string)data.Element(ns + "ID").Value,
                };

foreach (var element in elements)
{
    Console.WriteLine(element.firstName);
    Console.WriteLine(element.lastName);
    Console.WriteLine(element.id);
}
我想有这样的结果

Ram
Brown
22148868
任何人都可以建议或编辑我的代码。

您的XML元素不在http://www.springframework.net 名称空间-它们位于空名称空间中,这就是为什么它们在其中包含xmlns=的原因

您还有一个输入错误—您有两个XDocument变量—一个是xdoc—一个是空文档,另一个是您加载的文档。您当前的代码正在查询空代码,这显然是行不通的。我建议你完全去掉这个变量

因此,您希望将代码更改为:

var elements = from data in doc.Descendants(ns + "Record")
               select new
               {
                   firstName = (string) data.Element("FirstName"),
                   lastName = (string) data.Element("LastName"),
                   id = (string) data.Element("ID"),
                };

请注意,我保留了Record元素的ns部分,因为它位于名称空间中。我还删除了Value属性的使用-您要么需要强制转换元素,要么需要使用Value属性,但不能同时使用两者。

欢迎使用Stack Overflow。我已经编辑了你的代码,使它的格式很好-请使用预览自己这样做,当问未来的问题。将XML显示为文章中的文本而不是图像也很有用。例如,这使得其他用户可以轻松地将其复制到XML文件中并测试代码。您的代码实际上预期一个文件中可能有多条记录,但实际上它是根元素。。。您是否有一个包含多条记录的文件的示例?@User:如果您没有更新您的帖子,以将XML作为文本包含,那将毫无帮助。为了重现这个问题并帮助你,我不得不用手在自己的电脑里输入所有这些。我将编辑我的答案,但请帮助我们编辑您的文章,将XML作为文本包含在内。如果你能显示当前的输出,这也会有所帮助——事实上,它根本没有拾取你的记录。