我在使用LINQ读取XML文件时遇到了问题。
这是我的XML文件:
我正在使用的代码如下:
这段代码返回给我所有的名字,但是当我将属性值从 "first" 改为 "last" 时,它就变成空白了。
当我切换姓名节点时,它会返回姓氏。对我来说,似乎每个雇员查询都返回第一个名称节点的值,忽略第二个节点。你能帮我修复一下吗?
这是我的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<Employees>
<Employee>
<Name Type="First">Jack</Name>
<Name Type="Last">Black</Name>
</Employee>
<Employee>
<Name Type="First">John</Name>
<Name Type="Last">Blue</Name>
</Employee>
<Employee>
<Name Type="First">Dan</Name>
<Name Type="Last">Red</Name>
</Employee>
<Employee>
<Name Type="First">Patrick</Name>
<Name Type="Last">Green</Name>
</Employee>
</Employees>
我正在使用的代码如下:
XElement doc = XElement.Load("xmldoc.xml");
var query = from x in doc.Elements("Employee") where x.Element("Name").Attribute("Type").Value == "First" select x;
foreach (XElement item in query)
{
Console.WriteLine(item.Element("Name").Value);
}
这段代码返回给我所有的名字,但是当我将属性值从 "first" 改为 "last" 时,它就变成空白了。
当我切换姓名节点时,它会返回姓氏。对我来说,似乎每个雇员查询都返回第一个名称节点的值,忽略第二个节点。你能帮我修复一下吗?
where
,并在你的foreach
中获取你想要的标签:Console.WriteLine(item.Elements("Name").Single (i => i.Attribute("Type").Value == "Last").Value);
- mellamokb