当前位置:编程学习 > C#/ASP.NET >>

这个问题简单(我换个号上来!多点分,答对马上给分,在线等)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.IO;
using System.Xml;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string XmlText = "<ToBuy><Buy><year1>12</year1><year2>20</year2><year3>40</year3></Buy><BuyCb><year1>50</year1><year2>60</year2><year3>60</year3><BuyCb></ToBuy>";
            DataSet ds = ConvertXMLToDataSet(XmlText);
            DataTable table = ds.Tables[0];

            //这边要怎么读到上面个个节点的值

        }

        #region 将XML字符创转换为DataSet
        public static DataSet ConvertXMLToDataSet(string xmlData)
        {
            StringReader stream = null;
            XmlTextReader reader = null;
            try
            {
                DataSet xmlDS = new DataSet();
                stream = new StringReader(xmlData);
                reader = new XmlTextReader(stream);
                xmlDS.ReadXml(reader);
                return xmlDS;
            }
            catch (Exception ex)
            {
                string strTest = ex.Message;
                return null;
            }
            finally
            {
                if (reader != null)
                    reader.Close();
            }
        }
        #endregion
    }
}



我想把每一个节点的值都读出来,还有个问题,我那串XML字符串是不是就代表两个表哟当它转成DATATABLE时? --------------------编程问答-------------------- 你已经读取到dataSet中,在ds.Tables[0]中foreach行,是你所说的两个节点吗?

foreach(DataRow r in ds.Tables[0].Rows)
{} --------------------编程问答-------------------- 自个顶一下...大家快帮忙啊..............要先看清我那个XML --------------------编程问答-------------------- --------------------编程问答-------------------- "<ToBuy><Buy><year1>12</year1><year2>20</year2><year3>40</year3></Buy><BuyCb><year1>50</year1><year2>60</year2><year3>60</year3></BuyCb></ToBuy>";

字符串错了,在<BuyCb>少个反斜扛 --------------------编程问答-------------------- 读出来的dataset里面有2个dataTable
--------------------编程问答-------------------- 运行了下

ConvertXMLToDataSet里有异常

The 'BuyCb' start tag on line 1 does not match the end tag of 'ToBuy'. Line 1, position 137. --------------------编程问答-------------------- 首先不知道您有没有注意到XML节点有错误,</BuyCb>误写成<BuyCb>了

查询出所有节点的值不能用DataTable table = ds.Tables[0]; 因为你的XML转成DataSet的Table.Count为2.

这样写应该是可以的:
 string XmlText = "<ToBuy><Buy><year1>12</year1><year2>20</year2><year3>40</year3></Buy><BuyCb><year1>50</year1><year2>60</year2><year3>60</year3></BuyCb></ToBuy>";
            DataSet ds = ConvertXMLToDataSet(XmlText);

            for (int i = 0; i < ds.Tables.Count; i++)
            {
                for (int z = 0; z < ds.Tables[i].Rows.Count; z++)
                {
                    for (int j = 0; j < ds.Tables[i].Columns.Count; j++)
                    {
                        label1.Text += ds.Tables[i].Rows[z][j].ToString();
                    }
                }
            } --------------------编程问答--------------------

            string XmlText = "<ToBuy><Buy><year1>12</year1><year2>20</year2><year3>40</year3></Buy><BuyCb><year1>50</year1><year2>60</year2><year3>60</year3></BuyCb></ToBuy>";
            DataSet ds = ConvertXMLToDataSet(XmlText);
            DataTable table = ds.Tables[0];
            foreach (DataRow row in table.Rows)
            {
                foreach (Object obj in row.ItemArray)
                {
                    Console.WriteLine(obj.ToString());
                }
            }

            DataTable table1 = ds.Tables[1];
            foreach (DataRow row in table1.Rows)
            {
                foreach (Object obj in row.ItemArray)
                {
                    Console.WriteLine(obj.ToString());
                }
            }

--------------------编程问答-------------------- 参考后半部分的代码
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,