【问题标题】:How to Parse string Values to xml and bind it to dataset如何将字符串值解析为 xml 并将其绑定到数据集
【发布时间】:2011-10-17 19:15:33
【问题描述】:

我正在尝试从数据库中检索 5 列,其中之一是 XML 类型。返回数据集时,它被视为字符串。我需要将该值提取为 xml 并绑定到另一个数据集。

例如:如果我的查询向数据集返回 5 列,则其中一列是 xml。我需要提取该值并将其作为 xml 存储到另一个数据集。

我尝试使用 dstDataset.Tables[0][3].toString(); 它以字符串形式返回整个 xml。现在我需要解析为 xml 并绑定到另一个数据集。

我希望你们得到我的问题。

【问题讨论】:

  • 所以,只是为了确保我们理解正确:您想提取一些 XML,并将整个 XML 集“按原样”插入另一个数据集? (即,不需要从 XML 中提取单独的数据?)

标签: c# xml dataset


【解决方案1】:

看看下面的代码:

DataSet dataSet = new DataSet();
DataTable dataTable = new DataTable("table1");
dataTable.Columns.Add("col1", typeof(string));
dataSet.Tables.Add(dataTable);

string xmlData = "<XmlDS><table1><col1>Value1</col1></table1><table1><col1>Value2</col1></table1></XmlDS>";

System.IO.StringReader xmlSR = new System.IO.StringReader(xmlData);

dataSet.ReadXml(xmlSR, XmlReadMode.IgnoreSchema);

如果您将 xmlData 替换为列中的数据并确保架构正确,这应该可以工作。

【讨论】:

    【解决方案2】:

    也许你可以使用:

    using System.Xml.Linq;
    (...)
    XDocument xmlXDoc = XDocument.Parse(dstDataset.Tables[0][3].toString());
    

    然后您可以通过以下方式获取 XML:

    xmlXDoc.ToString()
    

    或者,如果您更喜欢不带格式(缩进的 XML):

    xmlXDoc.ToString(SaveOptions.DisableFormatting)
    

    有关 LINQ to XML 的更多信息:http://msdn.microsoft.com/en-us/library/bb387044.aspx

    【讨论】:

    • XDocument xmlXDoc = XDocument.Parse(dstSection.Tables[0][3].toString());这条线给了我错误。说您不能使用 [] 类型的表达式应用索引 'System.Data.DataDatable
    • 奇怪...鉴于这为您提供了一个字符串,正如您在问题中所写的那样:dstDataset.Tables[0][3].toString();,那么如果该字符串包含有效的 XML,XDocument.Parse() 应该能够解析该字符串。您可以先尝试将其定义为变量:String myXml = dstDataset.Tables[0][3].toString();,然后将其作为参数传递,以确保您真正了解您对 DataTable 的期望。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    相关资源
    最近更新 更多