<?xml version="1.0" encoding="gb2312"?>
<FeatureCollection>
<FeatureMember>
<RECORD>
<TYPE>A省</TYPE>
<NAME>张三</NAME>
</RECORD>
<RECORD>
<TYPE>A省</TYPE>
<NAME>李四</NAME>
</RECORD>
<RECORD>
<TYPE>B省</TYPE>
<NAME>王五</NAME>
</RECORD>
<RECORD>
<TYPE>A省</TYPE>
<NAME>小张</NAME>
</RECORD>
<RECORD>
<TYPE>C省</TYPE>
<NAME>张三</NAME>
</RECORD>
........
</FeatureMember>
</FeatureCollection>
有这样中类型的xml文件,需要解析统计后得到如下类型:
A省:3个
  张三
  李四
  小张
B省:1个
  王五
C省:1个
  张三如何做到这种效果,请高手指点!!!!!

解决方案 »

  1.   

    DataSet ds=new DataSet();
    ds.ReadXml(@"d:\test.xml");
    DataTable dt=ds.Tables[1];
    string str=string.Empty;
    ArrayList list=new ArrayList();
    for(int i=0;i<dt.Rows.Count;i++)
    {
    if(list.Contains(dt.Rows[i]["TYPE"])==false)
    {
    list.Add(dt.Rows[i]["TYPE"]);
    }
    }
    for(int i=0;i<list.Count;i++)
    {
    DataRow[] rows=dt.Select("TYPE='"+list[i]+"'","");
    str+=list[i]+":";
    for(int j=0;j<rows.Length;j++)
    {
    str+=rows[j]["NAME"]+",";
    }
    str+="|";
    }
    txt1.Text=str;
      

  2.   

    刚才的忘记加条数了
    DataSet ds=new DataSet();
    ds.ReadXml(@"d:\test.xml");
    DataTable dt=ds.Tables[1];
    string str=string.Empty;
    ArrayList list=new ArrayList();
    for(int i=0;i<dt.Rows.Count;i++)
    {
    if(list.Contains(dt.Rows[i]["TYPE"])==false)
    {
    list.Add(dt.Rows[i]["TYPE"]);
    }
    }
    for(int i=0;i<list.Count;i++)
    {
    DataRow[] rows=dt.Select("TYPE='"+list[i]+"'","");
    str+=list[i]+":"+rows.Length+":";
    for(int j=0;j<rows.Length;j++)
    {
    str+=rows[j]["NAME"]+",";
    }
    str+="|";
    }
    txt1.Text=str;