我有包含节点的xml。我想计算该特定节点的不同值并将其存储到C#中的变量中。
我的XML就像这样
<?xml version="1.0" encoding="utf-8"?>
<Emp>
<A.EMPLID>1</A.EMPLID>
<A.Phone>1234</A.Phone>
</Emp>
<Emp>
<A.EMPLID>2</A.EMPLID>
<A.Phone>1234</A.Phone>
</Emp>
<Emp>
<A.EMPLID>1</A.EMPLID>
<A.Phone>1234</A.Phone>
</Emp>
<Emp>
<A.EMPLID>3</A.EMPLID>
</Emp>
我正在尝试这个C#但是抛出错误
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("SAMPLE.xml");
XmlNodeList count = xmlDoc.SelectNodes(@"//Emp");
不确定如何计算不同的Emplid。在这种情况下它将是'3'
答案 0 :(得分:0)
正如@Richardissimo所指出的,每个XML 必须只有一个(并且只有一个)根元素。
string str = @"
<root>
<Emp>
<A.EMPLID>1</A.EMPLID>
<A.Phone>1234</A.Phone>
</Emp>
<Emp>
<A.EMPLID>2</A.EMPLID>
<A.Phone>1234</A.Phone>
</Emp>
<Emp>
<A.EMPLID>1</A.EMPLID>
<A.Phone>1234</A.Phone>
</Emp>
<Emp>
<A.EMPLID>3</A.EMPLID>
</Emp>
</root>";
var xml = XElement.Parse(str);
int count = xml.Elements().GroupBy(x => x.Element("A.EMPLID").Value).Count();
// count = 3
答案 1 :(得分:0)
你的评论几乎就在那里。
我假设您在xml值周围添加了一个名为root
的节点。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("SAMPLE.xml");
XmlNodeList count = xmlDoc.SelectNodes(@"//root/Emp/A.EMPLID");
int i = count.Cast<XmlNode>().Select(a => a.InnerText).Distinct().Count();