这个问题简单(我换个号上来!多点分,答对马上给分,在线等)
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