使用C#

时间:2018-05-07 20:01:08

标签: c# xml

我有包含节点的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'

2 个答案:

答案 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();