我有一个XML文件格式如下:
<?xml version="1.0" encoding="gb2312"?>
<DATA000022200612>
    <area>
        <areaid>110000</areaid>
    <item>
        <PK>
            <key>10010001</key>
      <intervaltype>5</intervaltype>
</PK>
    <value>1878.85</value>
    <re></re>
</item>
    <item>
        <PK>
            <key>10020001</key>
      <intervaltype>5</intervaltype>
</PK>
    <value>18550.94</value>
    <re></re>
</item>
    <item>
        <PK>
            <key>10020002</key>
      <intervaltype>5</intervaltype>
</PK>
    <value>54130.9</value>
    <re></re>
</item>
</area>
    <area>
        <areaid>120000</areaid>
    <item>
        <PK>
            <key>10010001</key>
      <intervaltype>5</intervaltype>
</PK>
    <value>2344.59</value>
    <re></re>
</item>
    <item>
        <PK>
            <key>10020001</key>
      <intervaltype>5</intervaltype>
</PK>
    <value>10621.42</value>
    <re></re>
</item>
</area>
</DATA000022200612>
我要把它读到DATAGRID中,显示格式如下:
areaid   key        value
110000   10010001   1878.85
110000   10020001   18550.94
110000   10020002   54130.9
120000   10010001   2344.59
120000   10020001   10621.42请问代码应该怎么写啊?小弟刚学C#,希望给写出详细代码,非常感谢!

解决方案 »

  1.   

    都懒得写了, 自己找找xml相关的东东, 不是很难
      

  2.   

    写个最简单的XSL就搞定了.
      

  3.   

    http://industry.ccidnet.com/art/1155/20051223/798223_1.html
      

  4.   

    你这个结构定义的也太~~~~~跟你的DataGrid一点关系都没有只能新创建一个DataTable
    然后循环的利用XPath读取节点
    因为key 和Value这两个列是最多的
    因此可以先读取key和Value,然后去判断Value的父节点是否存在areaid 这个兄弟节点,
    如果存在则用存在的,否则用上一个
      

  5.   

    XmlDocument doc = new XmlDocument();
    doc.Load(file);//xml文件路径
    XmlNodeList valueList = doc.SelectNodes("/DATA000022200612/area/item/value");
    XmlNodeList keyList = doc.SelectNodes("/DATA000022200612/area/item/PK/key");
      

  6.   

    楼上老兄能把代码写全吗?本人实在是刚学,又急着用XML中的数据,文件实在太大,没办法手工去找数据。非常感谢
      

  7.   

    思路是先读成DataSet然后再做,就简单了,让DataSet和控件打交道
      

  8.   

    主要是我这个xml文件结构比较烦,我读出来的数据总是只有areaid一列数据。而楼上兄弟lovefootball(蟑螂(生活就是扯淡--做人要放低姿态)) 说的循环我又不太明白。
      

  9.   

    private void Form1_Load(object sender, EventArgs e)
            {
                string file = "c:\\q.xml";            XmlDocument _xmldoc = new XmlDocument();
                _xmldoc.Load(new StreamReader (file));            DataTable dt = new DataTable();            dt.Columns.Add ( new DataColumn("areaid",typeof(string)));
                dt.Columns.Add ( new DataColumn("key",typeof(string)));
                dt.Columns.Add ( new DataColumn("value",typeof(string)));            XmlElement root = _xmldoc.DocumentElement; //<DATA000022200612>
                foreach (XmlNode area in root.ChildNodes) //area
                {
                    XmlNode areaidnode = area.SelectSingleNode("areaid");
                    string areaid = areaidnode.InnerText;
                    XmlNodeList items = area.SelectNodes("item");                foreach (XmlNode node in items) //item
                    {
                        string key = node.SelectSingleNode("PK/key").InnerText;
                        string value = node.SelectSingleNode("value").InnerText;                    DataRow dr =  dt.NewRow();
                        dr["areaid"] = areaid;
                        dr["key"] = key;
                        dr["value"] = value;
                        dt.Rows.Add(dr);
                    }
                }            this.dataGridView1.DataSource = dt;
            }
      

  10.   

    .net2005下
    结果和你要的一样
      

  11.   

    KimmKing(秦风意动(NAF Framework--代替Web Service)) 很强哦
    学习。