如何根据xID&&获取节点“FieldName”?通过LINQ TO XML进行dID。 注意:dID可能存在也可能不存在。 我到目前为止所尝试的内容如下所示。 但是,当dID不存在时,我的代码不处理条件
<Configuration>
<Contract xID="2">
<Document dID="227">
<FieldName name="AAAA"/>
<FieldName name="BBBB"/>
</Document>
</Contract>
<Contract xID="5">
<FieldName nam`enter code here`e="CCCC"/>
<FieldName name="DDDD"/>
</Contract>
</Configuration>
我到目前为止所尝试的内容如下所示。 但是,当dID不存在时,我的代码不处理条件
XDocument xmlDoc = XDocument.Load("../../FieldConfiguration.xml");
var fieldNames = (from n in xmlDoc.Descendants("Contract")
where (int)n.Attribute("xID") == 5 &&
(int)n.Element("Document").Attribute("dID") == 227
from f in n.Element("Document").Elements()
select (string) f.Attribute("name")).ToList();
foreach (string name in fieldNames)
{
Console.WriteLine("Site: " + name);
}
答案 0 :(得分:0)
只需在where子句
中添加null检查XDocument xmlDoc = XDocument.Load("../../FieldConfiguration.xml");
var fieldNames = (from n in xmlDoc.Descendants("Contract")
where (int)n.Attribute("xID") == 5 &&
n.Element("Document").Attribute("dID") != null &&
(int)n.Element("Document").Attribute("dID") == 227
from f in n.Element("Document").Elements()
select (string) f.Attribute("name")).ToList();
foreach (string name in fieldNames)
{
Console.WriteLine("Site: " + name);
}