我有一个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#,希望给写出详细代码,非常感谢!
<?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#,希望给写出详细代码,非常感谢!
解决方案 »
- Application.Restart()的用法
- 从客户端向服务器端发送一段数据流,就收服务器端事先准备好的与客户发的数据流对应的一张图片的代码怎么写?
- winfrom窗口中打开EXCEL并对表格进行操作,怎么做?
- 一道面试题,大家帮忙看看!
- 异步写入同一个文件?
- 求一个小函数
- 高手!高手!高手!高手!高手!---》请进!
- 紧急求助 System.OutOfMemoryException导致程序自动退出 其中用到remoting 和非托管
- 急请求高手给我个C#系统啊
- winform中如何在图片的上层画出文字,并且可以移动图像,而文字位置不变
- 一个类中定义了一个变量,并赋值,在另一个类中调用这个变量,为什么赋的值没有生效呢
- 请教,既然有.net.mail空间,为什么还要jmail
然后循环的利用XPath读取节点
因为key 和Value这两个列是最多的
因此可以先读取key和Value,然后去判断Value的父节点是否存在areaid 这个兄弟节点,
如果存在则用存在的,否则用上一个
doc.Load(file);//xml文件路径
XmlNodeList valueList = doc.SelectNodes("/DATA000022200612/area/item/value");
XmlNodeList keyList = doc.SelectNodes("/DATA000022200612/area/item/PK/key");
{
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;
}
结果和你要的一样
学习。