C#读取XML问题
<PointRecord ID="00000057" TimeStamp="2010-07-05T09:39:59"><Name>Yzc</Name>
<Code/>
<Method>GpsRTKControlPoint</Method>
<SurveyMethod>Fix</SurveyMethod>
<Classification>Normal</Classification>
<Deleted>false</Deleted>
<ECEFDeltas>
<DeltaX>1838.5519045149</DeltaX>
<DeltaY>482.8904503677</DeltaY>
<DeltaZ>-333.16447392013</DeltaZ>
</ECEFDeltas>
<ReferenceRecordID>0000004d</ReferenceRecordID>
<RTK_Base>A1</RTK_Base>
<AntennaID>00000056</AntennaID>
<ComputedGrid>
<North>33935.771457227</North>
<East>74407.768982798</East>
<Elevation>567.1</Elevation>
</ComputedGrid>
<Precision>
<Horizontal>0.00616929062489</Horizontal>
<Vertical>0.01237836094254</Vertical>
</Precision>
<QualityControl1>
<NumberOfSatellites>12</NumberOfSatellites>
<RelativeDOPs>true</RelativeDOPs>
<PDOP>1.8156530857086</PDOP>
<HDOP>0.8749361038208</HDOP>
<VDOP>1.6248326301575</VDOP>
<RMS>16.82648435235</RMS>
<NumberOfPositionsUsed>32</NumberOfPositionsUsed>
<HorizontalStandardDeviation/>
<VerticalStandardDeviation/>
<StartTime>
<GPSWeek>1591</GPSWeek>
<Seconds>92384.2</Seconds>
</StartTime>
<EndTime>
<GPSWeek>1591</GPSWeek>
<Seconds>92415.2</Seconds>
</EndTime>
<MonitorStatus>NotMonitored</MonitorStatus>
</QualityControl1>
</PointRecord>
请教如何提取PointRecord中的需要的字段在dataGridView表中显示,比如说我需要显示的是其中的Name+North+East+Elevation+……
简单的代码如下:
DataSet myDataSet = new DataSet();
myDataSet.ReadXml("20100705.xml");
dataGridView1.DataSource = myDataSet.Tables["PointRecord"];
请高手帮忙,谢谢 --------------------编程问答-------------------- 那你只需要在gridview中设置要显示的列就可以了
<Columns>
<asp:BoundField DataField="Name" HeaderText="名称" />
//...
</Columns> --------------------编程问答-------------------- 或者你直接将XML转换成DATASET --------------------编程问答-------------------- 参考 --------------------编程问答-------------------- 不好意思,可否详细点,我是个菜鸟,谢谢 --------------------编程问答-------------------- DataSet myDataSet = new DataSet();
myDataSet.ReadXml("20100705.xml");
//dataGridView1.DataSource = myDataSet.Tables["PointRecord"]; 注释该句
//定义需要显示的列头数组
string[] aryColums = new string[] { "Name", "North", "East", "Elevation" };
//定义需要显示的行数据的数组
string[] aryData = null;
//用数组初始化列头
for (int i = 0; i < aryColums.Length; i++)
{
dataGridView1.Columns.Add(aryColums[i], aryColums[i]);
}
//取PointRecord表数据(Name在该表中)
DataTable t_PointRecord = myDataSet.Tables["PointRecord"];
//取ComputedGrid表数据(Notrh,Ease,Elevation在该表中)
DataTable t_ComputedGrid = myDataSet.Tables["ComputedGrid"];
//定义关联ID(考虑xml中可能有多个PointRecord节点,id用于关联子节点下面的数据,即当前dataSet中表ComputedGrid的数据)
string id = "";
//清空dataGridView
dataGridView1.Rows.Clear();
//xml中有多少个PointRecord节点,PointRecord表中就有多少条数据,以PointRecord_Id标识唯一性
for (int i = 0; i < t_PointRecord.Rows.Count; i++)
{
//创建行数据数组(上面只是定义,这里才new)
aryData = new string[aryColums.Length];
//获取到PointRecord_Id值,用于查询ComputedGrid表数据
id = t_PointRecord.Rows[i]["PointRecord_Id"].ToString();
//从PointRecord表中取Name
//注意aryData数组中值的顺序,该顺序为显示顺序
aryData[0] = t_PointRecord.Rows[i]["Name"].ToString();
//从ComputedGrid表中取North
//首先查询PointRecord_Id = id 的记录,Select方法返回的是行的数组,因为满足条件的行可能存在多行
//但就我们的情况,PointRecord节点下面有且只有一个ComputedGrid节点,所以直接取数组最上面一维,即[0]
//取到行对象后,再使用Row[列名]取值,再ToString后存放到aryData数组中
aryData[1] = t_ComputedGrid.Select("PointRecord_Id = '" + id + "'")[0]["North"].ToString();
//从ComputedGrid表中取East
aryData[2] = t_ComputedGrid.Select("PointRecord_Id = '" + id + "'")[0]["East"].ToString();
//从ComputedGrid表中取Elevation
aryData[3] = t_ComputedGrid.Select("PointRecord_Id = '" + id + "'")[0]["Elevation"].ToString();
//使用aryData构到Row对象并添加到dataGridView中
dataGridView1.Rows.Add(aryData);
}
这里面只有一个PointRecord根节点时是没有问题的,但是有多个的时候就出错了
补充:.NET技术 , C#