尝试从第二行获取数据。 在第二行我需要阅读: - 关口 subrows - rows。
我的代码非常令人困惑我获得所有行... 请帮忙解决一下。我无法弄清楚如何使用复杂的xml文档
C#
path = path + "/PongraweDriver.xml";
XElement root = XElement.Load(path);
IEnumerable<XElement> datasource =
from el in root.Descendants("table")
where (string)el.Attribute("name") == "Eco driving"
select el;
IEnumerable<XElement> rowdata =
from elm in datasource.Descendants("row")
//where (string)el.Attribute("name") == "Eco driving"
select elm;
foreach (XElement elm in rowdata)
Console.WriteLine(elm);
XML
<table cols="3" flags="16781440" id="drivers_group_ecodriving"
name="Eco driving" rows="3">
<header>
<col name="№"/>
<col name="Grouping"/>
<col name="Count"/>
</header>
<row>
<col txt="1" val="0" vt="0"/>
<col txt="Kyaw Min Oo" val="0" vt="0"/>
<col txt="5" val="5" vt="2"/>
<subrows>
<row>
<col txt="1.1" val="0" vt="0"/>
<col txt="Harsh Brake Km/h.s" val="0" vt="0"/>
<col txt="2" val="2" vt="2"/>
</row>
<row>
<col txt="1.2" val="0" vt="0"/>
<col txt="OverSpeed-Medium" val="0" vt="0"/>
<col txt="3" val="3" vt="2"/>
</row>
</subrows>
</row>
</table>
答案 0 :(得分:0)
我在c#中使用xml linq将结果放入数据表中。见下面的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.Data;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
XElement table = doc.Descendants("table").FirstOrDefault();
DataTable dt = new DataTable((string)table.Attribute("name"));
XElement header = table.Element("header");
foreach (XElement col in header.Elements("col"))
{
dt.Columns.Add((string)col.Attribute("name"), typeof(string));
}
foreach (XElement row in table.Descendants("row"))
{
string[] rowData = row.Elements("col").Select(x => (string)x.Attribute("txt")).ToArray();
dt.Rows.Add(rowData);
}
}
}
}