【问题标题】:List of type DataROW to XML类型 DataROW 到 XML 的列表
【发布时间】:2017-05-30 13:46:13
【问题描述】:

我有一个如下列表:

List<datarow> list =  getxml_table.AsEnumberable().ToList();

这在每一行中都包含 XML DATA。如何将其复制到 XML 文件?我尝试使用 XML 序列化程序,但它需要一个无参数的构造函数,所以这是不可能的。

任何其他想法。

编辑:

List&lt;datarow&gt; 中的 XML 数据(这只是一个示例,用于说明目的,实际数据非常庞大)。每行包含以下 XML。

<List>
<Listevent someelementdata ="false">
 <someelement>
  <moreelement morelementdata = "1234"/>
</someelement>
</Listevent>
</List>

这是我尝试过的:

using (stringwriter stringwriter = new stringwriter (new stringbuilder()))
{
  xmlserializer xmlserializer = new xmlserializer(typeof(DataRow));
  xmlserializer.serialize(stringwriter, list);
  var string = stringwriter.string();
}

【问题讨论】:

  • 嗯....不太清楚你的问题是什么。您能否详细说明并显示一些您正在进入列表的数据示例以及您尝试将其写入文件的代码示例?
  • 请看编辑
  • 您是否尝试通过 DataRow.Item 属性读取 DataRow 的 xml 内容并将其保存在文件中?

标签: c# .net xml linq-to-xml


【解决方案1】:

首先 - DataRow 本身不包含数据(至少如果我们谈论的是标准 ADO.NET DataRow)。数据存储在DataRow 的具体“单元”中(类似于DataRow["column_name"])。

下一步 - 为什么需要XmlSerializer?也许我还没有完全理解你的问题——但对我来说,你似乎有List&lt;DataRow&gt;,并且在每一行的某些单元格中,你有一些包含 xml 数据的字符串。

因此,您可以将这些字符串写入文件,例如(伪代码):

List<DataRow> list =  getxml_table.AsEnumberable().ToList();
using (var writer = new StreamWriter(@"c:\temp\1.txt"))
{
    foreach(var row in list)
    {
        writer.WriteLine(row["column_name"]);
    }
}

【讨论】:

  • 如何使用这种方法添加 xml 标头和加密。我要手动这样做吗?
  • 您可以在按数据行循环之前将标题与writer.WriteLine(your_header) 放在同一文件中。我不会费心在像你这样的用例中解析然后序列化 xml - 有什么比将现有的 xml 数据作为字符串写入文件更简单......
猜你喜欢
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 2011-02-08
  • 1970-01-01
相关资源
最近更新 更多