从XML文件中提取表数据

时间:2019-07-26 05:42:06

标签: c# html xml

我想知道是否可能有一个通用类从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

有帮助吗?谢谢。

2 个答案:

答案 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
                });
            }

        }

    }

}