想用winform统计了FriendlyName节点中出现名字的次数,结果过为
吴    四  1
张二一    1
孟 一    2
龚 三    1
xml文件格式如下:<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type='text/xsl' href='ChatRecord.xsl'?>
<Log ChatType="2" Caption="考核【144752】 的对话历史记录" OwnerUid="2662494" Id="45636" Upload="false" ChatRecordIndex="1">
<Message ID="1" SessionID="1" Date="2012-08-08" Time="11:03:59" FromUid="2662494">
<From>
<User FriendlyName="吴    四"/>
</From>
<To>
<User FriendlyName=""/>
</To>
<Text>&lt;span style="font-family:宋体;font-size:11pt;font-weight:normal;font-style:normal;text-decoration:none;color:#000000;"&gt;??/&lt;/span&gt;</Text>
</Message>
<Message ID="2" SessionID="1" Date="2012-08-08" Time="11:04:02" FromUid="2662491">
<From>
<User FriendlyName="孟 一"/>
</From>
<To>
<User FriendlyName=""/>
</To>
<Text>&lt;span style="font-family:宋体;font-size:11pt;font-weight:normal;font-style:normal;text-decoration:none;color:#000000;"&gt;&lt;IMG  onclick=javascript:ClickEvent(this); type="0" src="C:\Program Files\imo\i'm office\AppData\Emotion\204.gif" realwidth="0" realheight="0" onload="javascript:if(typeof(ImgOnLoad) == &amp;apos;function&amp;apos;){ImgOnLoad(this);}" &gt;&lt;/span&gt;</Text>
</Message>
<Message ID="3" SessionID="2" Date="2012-08-08" Time="11:04:19" FromUid="2662480">
<From>
<User FriendlyName="张二一"/>
</From>
<To>
<User FriendlyName=""/>
</To>
<Text>&lt;span style="font-family:宋体;font-size:11pt;font-weight:normal;font-style:normal;text-decoration:none;color:#000000;"&gt;体验一下效果&lt;/span&gt;</Text>
</Message>
<Message ID="4" SessionID="1" Date="2012-08-08" Time="11:04:47" FromUid="2662491">
<From>
<User FriendlyName="孟 一"/>
</From>
<To>
<User FriendlyName=""/>
</To>
<Text>&lt;span style="font-family:宋体;font-size:11pt;font-weight:normal;font-style:normal;text-decoration:none;color:#000000;"&gt;效果很好很强大。。&lt;/span&gt;</Text>
</Message>
<Message ID="355" SessionID="27" Date="2012-12-25" Time="09:29:49" FromUid="2662486">
<From>
<User FriendlyName="龚 三"/>
</From>
<To>
<User FriendlyName=""/>
</To>
<Text>&lt;span style="font-family:宋体;font-size:21pt;font-weight:normal;font-style:normal;text-decoration:none;color:#ff0000;"&gt;&lt;IMG  onclick=javascript:ClickEvent(this); type="0" src="C:\Program Files\imo\i'm office\AppData\Emotion\120.gif" realwidth="0" realheight="0" onload="javascript:if(typeof(ImgOnLoad) == &amp;apos;function&amp;apos;){ImgOnLoad(this);}" &gt;&lt;/span&gt;</Text>
</Message>
</Log>

解决方案 »

  1.   

    菜鸟给一方案:
               if (File.Exists(s_FilePath))
                {
                    XElement Xdoc = XElement.Load(s_FilePath);
                    Dictionary<string, int> test = Xdoc.Descendants("User")
                        .Select(s => s.Attribute("FriendlyName").Value)
                        .Where(s => !string.IsNullOrEmpty(s))
                        .GroupBy(s => s)
                        .ToDictionary(s => s.Key, s => s.Count());
                }
      

  2.   

    不行呢?我是新手,这个报错test = Xdoc.Descendants("User"),能解释了吗?
      

  3.   


    代码如下:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Xml.Linq;
    using System.Xml;
    using System.Windows.Forms;namespace imo
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                OpenFileDialog openFileDialog1 = new OpenFileDialog();     //显示选择文件对话框            openFileDialog1.InitialDirectory = "c:\\";            openFileDialog1.Filter = "xml files (*.xml)|*.xml";            openFileDialog1.FilterIndex = 2;            openFileDialog1.RestoreDirectory = true;
                //"(*.xls)|*.xls";            if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {                this.textBox1.Text = openFileDialog1.FileName;          //显示文件路径            }
            }                      private void Form1_Load(object sender, EventArgs e)
            {
               
            }        private void button2_Click(object sender, EventArgs e)
            {
                XmlDocument xmlDoc = new XmlDocument();            //xmlDoc.Load(this.textBox1.Text.Trim());            if (File.Exists(this.textBox1.Text.Trim())
                {
                    XElement Xdoc = XElement.Load(this.textBox1.Text.Trim());
                    Dictionary<string, int> test = Xdoc.Descendants("User")
                        .Select(s => s.Attribute("FriendlyName").Value)
                        .Where(s => !string.IsNullOrEmpty(s))
                        .GroupBy(s => s)
                        .ToDictionary(s => s.Key, s => s.Count());
                }
                
                         }        private void label1_Click(object sender, EventArgs e)
            {        }      
            
        }
    }请大牛,帮看看红色部分,报错原因
      

  4.   

    修改为这个,还是不行呢?
    private void button2_Click(object sender, EventArgs e)
            {
                XmlDocument xmlDoc = new XmlDocument();            //xmlDoc.Load(this.textBox1.Text.Trim());            
                    XElement Xdoc = XElement.Load(this.textBox1.Text.Trim());
                    Dictionary<string, int> test = xmldoc.Descendants("User")
                        .Select(s => s.Attribute("FriendlyName").Value)
                        .Where(s => !string.IsNullOrEmpty(s))
                        .GroupBy(s => s)
                        .ToDictionary(s => s.Key, s => s.Count());
                }