DS与xml,STRING之前的操作

string   configPath   =   System.IO.Path.GetFullPath(@ "Win.config ");
System.Xml.XmlTextReader   ConfigXTR   =   new   System.Xml.XmlTextReader(configPath);

while   (   ConfigXTR.Read()   )
{
//定位到配置节点
if   (ConfigXTR.NodeType   ==   XmlNodeType.Element   &&   ConfigXTR.Name   ==   "appSettings ")
{
while   (ConfigXTR.Read())
{
//结束时退出读取
if   (ConfigXTR.NodeType   ==   XmlNodeType.EndElement   &&   ConfigXTR.Name   ==   "appSettings ")
{
break;
}

if   (ConfigXTR.NodeType   ==   XmlNodeType.Element   &&   ConfigXTR.Name   ==   "add ")
{
//定位到属性
ConfigXTR.MoveToAttribute( "key ");
switch   (   ConfigXTR.Value   )
{
case   "DataBaseName ":
{
ConfigXTR.MoveToAttribute( "value ");
m_connType.DataBaseName   =   ConfigXTR.Value;
break;
}
case   "UserID ":
{
ConfigXTR.MoveToAttribute( "value ");
m_connType.UserID   =   ConfigXTR.Value;
break;
}
case   "Password ":
{
ConfigXTR.MoveToAttribute( "value ");
m_connType.Password   =   ConfigXTR.Value;
break;
}
case   "IntegratedSecurity ":
{
ConfigXTR.MoveToAttribute( "value ");

if   (   ConfigXTR.Value.ToUpper()   ==   "FALSE "   )
m_connType.IntegratedSecurity   =   false;
else
m_connType.IntegratedSecurity   =   true;
break;
}
case   "ServerName ":
{
ConfigXTR.MoveToAttribute( "value ");
m_connType.ServerName   =   ConfigXTR.Value;
break;
}
case   "ConnectTimeout ":
{
ConfigXTR.MoveToAttribute( "value ");
m_connType.ConnectTimeout   =   Convert.ToInt32(ConfigXTR.Value);
break;
}
default:
break;
}
}
}
}

 

try..

private   DataTable   GetData()
                {
                        //建一个DataTable
                        DataTable   dt   =   new   DataTable();
                        dt.Columns.Add( "CardNum ",   typeof(String));
                        dt.Columns.Add( "Name ",   typeof(String));
                        dt.Columns.Add( "Sex ",   typeof(String));
                        dt.Columns.Add( "Height ",   typeof(String));

                        //读取xml
                        XmlDocument   doc   =   new   XmlDocument();
                        doc.Load(@ "../../test.xml ");
                        XmlNodeList   nodes   =   doc.SelectNodes(@ "//Result ");
                        foreach   (XmlNode   node   in   nodes)
                        {
                                DataRow   row   =   dt.NewRow();
                                row[ "CardNum "]   =   node.ChildNodes[0].ChildNodes[1].InnerText;
                                row[ "Name "]   =   node.ChildNodes[1].ChildNodes[1].InnerText;
                                row[ "Sex "]   =   node.ChildNodes[2].ChildNodes[1].InnerText;
                                row[ "Height "]   =   node.ChildNodes[3].ChildNodes[1].InnerText;
                                dt.Rows.Add(row);
                        }

                        //返回datatable
                        return   dt;
                }    


//数据绑定
this.GridView1.DataSource=GetData();
this.GridView1.DataBind();

 

我取A表的一条记录,B和C表的两条记录数据打包成如下XML串:  
  string   dataXml=  
  <DATA>  
      <DATA_A>  
          <A1>  
              a1  
          </A1>  
          <A2>  
              a2  
          </A2>  
      </DATA_A>  
      <DATA_B>  
          <ITEM>  
              <B1>  
                  b1  
              </B1>  
              <B2>  
                  b2  
              </B2>  
          </ITEM>  
          <ITEM>  
              <B1>  
                  b1  
              </B1>  
              <B2>  
                  b2  
              </B2>  
          </ITEM>  
      </DATA_B>  
      <DATA_C>  
          <ITEM>  
              <C1>  
                  c1  
              </C1>  
              <C2>  
                  c2  
              </C2>  
          </ITEM>  
          <ITEM>  
              <C1>  
                  c1  
              </C1>  
              <C2>  
                  c2  
              </C2>  
          </ITEM>  
      </DATA_C>  
  </DATA>  
   
  然后执行   ds.ReadXML(new   System.IO.StringReader(dataXml),IgnoreSchema)  
  这样形成的dataset   ds   是不是有名为DATA_A、DATA_B、DATA_C的三个表,且DATA_A中有一条记录,DATA_B和DATA_C中各有两条记录,即是否与我打包XML字符串的数据源一致?  

 

最佳解决方案,与各方兄弟提的大致相同.
我现在将贴简单的源码出来
  XmlDataDocument   xmlDoc   =   new   XmlDataDocument();
  //   用于整个系统调用
  DataSet   xmlDataSet;
  //将xmlDataSet与xmlDoc关联
  xmlDataSet   =   xmlDoc.DataSet;
  //将xml文件的schema读入xmlDataSet,此句相当重要
xmlDataSet.ReadXmlSchema("book.xml");
  //将xml   file   载入   xmlDoc,此时xmlDataSet时同拥有相应的数据被填充.
  xmlDoc.Load("book.xml");

以后在系统中就操作xmlDataSet,就像操作DB一样了. 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值