我试图从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
任何人都可以建议或编辑我的代码。
答案 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
属性,但是两者。