我使用以下代码:
System.Xml.XmlDocument document = new System.Xml.XmlDocument();
document.Load(@"D:\Files\OCR\" + FileUpload1.FileName + ".xml");
if (document.HasChildNodes)
{
StringBuilder sb = new StringBuilder();
StringBuilder positions = new StringBuilder();
XmlElement root = document.DocumentElement;
XmlNodeList nodes = document.DocumentElement.SelectNodes("//char[@confidence]");
}
问题是document.DocumentElement.SelectNodes(" // char [@confidence]")返回null。
当我编写以下代码时,会显示结果。
int nodesCount = Document.DocumentElement.ChildNodes[0].ChildNodes.Count;
如何使用属性置信度计算所有节点?
答案 0 :(得分:1)
您可以使用XDocument和一些有效的LINQ:
XDocument doc = XDocument.Load(@"D:\Temp\file.xml");
int count = doc.Root.Descendants().Count(e => e.Attribute("confidence") != null);
Console.Write("Count:" + count);
Console.Read();
输出:4
我的file.xml包含以下内容:
<something>
<char confidence="1">
</char>
<char confidence="2">
</char>
<char confidence="3">
</char>
<notchar confidence="1">
</notchar>
</something>
以上代码检查所有后代的属性&#34;置信度&#34;。如果您只想要名称为&#34; char&#34;的元素,则可以使用以下内容:
int count = doc.Root.Descendants().Count(e => e.Name == "char" && e.Attribute("confidence") != null);
输出:3