我无法检索具有属性的节点的正确计数:我的xml的IsTrue =“true”。
我使用的代码是:>>>
Array depCnfg = (from node in xml.Descendants(Qualities).Descendants()
where node.Parent.Name == Qualities &&
(node.Attribute(ISTRUE).Value.ToString().ToLower() == "true")
select {
totalCount = node.Nodes().Count()}).ToArray();
XML USED: >>>
<Qualities>
<General>
<Tag1 IsTrue = "true">
<SubTag1>0</SubTag1>
</Tag1>
<Tag2 IsTrue = "false">
<SubTag2>0</SubTag2>
</Tag2>
</General>
</Qualities>
这里我总是把数量计算为2,但实际上它应该是1。 如果有人有想法请分享...谢谢
答案 0 :(得分:1)
您可以使用以下LINQ查询来获取计数。这是抓住'Qualities'节点并将其放入自己的元素中。然后我们查看每个后代,并检查以下内容:
然后它获得符合该标准的元素的计数。这假设只有一个'Qualities'节点。在这种情况下,您必须使用XElement qualities = element.Element * s *(“Qualities”); 。
string sampleString = "<MAINROOT>" +
"<Qualities>" +
"<General>" +
"<Tag1 IsTrue = \"true\">" +
"<SubTag1>0</SubTag1>" +
"</Tag1>" +
"<Tag2 IsTrue = \"false\">" +
"<SubTag2>0</SubTag2>" +
"</Tag2>" +
"</General>" +
"</Qualities>" +
"</MAINROOT>";
XElement element = XElement.Parse(sampleString);
XElement qualities = element.Element("Qualities");
if (qualities != null)
{
int trueCount = element.Element("Qualities")
.Descendants()
.Where(x => x.HasAttributes && x.Attribute("IsTrue") != null && x.Attribute("IsTrue").Value == "true")
.Count();
}