我想知道是否可能有一个通用类从XML文件中提取表数据?像循环或通过C#之类的东西?
这是示例XML:
<Report>
<Template>
<Stylesheet>
<Table>
<tbody>
<tr>
<td>
<p align="left">Test A</p>
</td>
<td>
<p align="center">Test B</p>
</td>
</tr>
<tr>
<td>
<p align="left">Test C</p>
</td>
<td>
<p align="center">Test D</p>
</td>
</tr>
</tbody>
</Table>
</Stylesheet>
</Template>
</Report>
我需要获取这些数据,测试A测试B测试C和测试D
有帮助吗?谢谢。
答案 0 :(得分:0)
如果您需要所有td childnodes内容,请尝试:
XDocument xml = XDocument.Load(xmlPath);
var list = from e in xml.Descendants("td").Elements() select e.Value;
只需要p:
XDocument xml = XDocument.Load(xmlPath);
var list = from e in xml.Descendants("td").Elements("p") select e.Value;
答案 1 :(得分:0)
这是一个完整的解决方案
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication120
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("align", typeof(string));
dt.Columns.Add("value", typeof(string));
XDocument doc = XDocument.Load(FILENAME);
foreach (XElement p in doc.Descendants("p"))
{
dt.Rows.Add(new object[] {
(string)p.Attribute("align"),
(string)p
});
}
}
}
}