【问题标题】:C#, XML - Loading a single XML file into two separate datasets based on a parameterC#、XML - 根据参数将单个 XML 文件加载到两个单独的数据集中
【发布时间】:2011-12-07 18:17:00
【问题描述】:

我需要根据 XML 中的给定参数将 XML 数据加载到两个单独的数据集中。数据通过 SOAP 调用反馈给我。

这是一个非常简化的 XML 示例:

<![CDATA[<?xml version="1.0" encoding="utf-16"?>

<ArrayOfUser xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<User>
    <ID>111-111-111</ID
    <Name>John Smith</Name>
    <Active>0</Active>
</User>

<User>
    <ID>111-111-222</ID
    <Name>Bob Smith</Name>
    <Active>0</Active>
</User>

<User>
    <ID>111-111-333</ID
    <Name>Sally Smith</Name>
    <Active>1</Active>
</User>


</ArrayOfUser>]]>

现在,我将所有内容都加载到单个数据集中:

XmlDocument UsersXmlDoc= new XmlDocument();
UsersXmlDoc.LoadXml(GetUsersResponse.Fetch_Result);
XmlReader UsersXmlReader= new XmlNodeReader(UsersXmlDoc);

DataSet ds = new DataSet();
ds.ReadXml(UsersXmlReader);

我想根据每个用户的 Active 属性将该信息拆分为两个数据集,以便一个数据集包含活跃用户,另一个包含非活跃用户。

【问题讨论】:

    标签: c# .net xml dataset xmldocument


    【解决方案1】:

    我做了一个例子,你可以做你想做的事。也许代码不是很好,但我认为它应该可以工作。主要思想是复制当前数据集并从第一个数据集中删除活动记录,从第二个数据集中删除非活动记录。

    DataSet dsActive = new DataSet();
    dsActive.ReadXml(UsersXmlReader);
    
    DataSet dsInactive = ds.Copy();//Copy to your another dataset
    Remove(dsActive.Tables[0], "0");//Remove all inactive(where Active = 0) records from dsActive DataSet
    Remove(dsInactive.Tables[0], "1");//Remove all active(where Active = 1) records from dsInactive DataSet
    
    private void Remove(DataTable table, string active)
    {
        for (int i = 0; i < table.Rows.Count; i++)
        {
            if (table.Rows[i]["Active"].Equals(active))
            {
                table.Rows[i].Delete();
                i = i - 1;//Removed record so we need to check same index
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 2010-11-12
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多