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

时间:2019-04-03 09:25:14

标签: linq c#-4.0

我试图从XML文件中获取每个元素的值,该XML文件的根元素中有名称空间,但是没有运气。

xml文件看起来像

”在此处输入图片描述“

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

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

var元素=来自xdoc.Descendants(ns +“ Record”)中的数据
               选择新的
               {
                   firstName =(string)data.Element(ns +“ FirstName”)。Value,
                   lastName =(string)data.Element(ns +“ LastName”)。Value,
                   id =(string)data.Element(ns +“ ID”)。Value,
                };

foreach(元素中的var元素)
{
    Console.WriteLine(element.firstName);
    Console.WriteLine(element.lastName);
    Console.WriteLine(element.id);
}
 

我想得到类似的结果

  Ram
棕色
22148868
 

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

1 个答案:

答案 0 :(得分:3)

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

您还有一个错字-您有两个XDocument变量-一个是xdoc(一个空文档),另一个是doc(已加载的文档)。您当前的代码正在查询空代码,显然这是行不通的。我建议您完全摆脱该变量。

因此,您想将代码更改为:

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"),
                };

请注意,我保留了ns元素的Record部分,因为在命名空间中。我还删除了Value属性的使用-您或者需要转换元素,而您需要使用Value属性,但是两者。