我在使用LINQ从XML文件读取时遇到了麻烦。用LINQ读取XML节点
这里是我的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);
}
此代码返回我所有的名字,但是当我改变从第一属性值到最后说到空白。
当我切换名称节点时,它会重新命名姓氏。对我来说,它看起来像每个雇员查询返回名字节点的值,并忽略第二个。你能帮我解决这个问题吗?
你真的想'Employee'在查询结果的要素,或者只是名字?如果你只是想要名字,那么你需要从名字中选择,而不是从员工中选择。否则,您需要转换结果(例如XPath)以过滤出您不需要的标签。或者你可以简单地离开了'where'干脆抓着你在你的'foreach'想要的标签:'Console.WriteLine(item.Elements(“名称”)单(I => i.Attribute(“类型” ).Value ==“Last”)。Value);' – mellamokb