当前位置:编程学习 > C#/ASP.NET >>

string 类型的xml 转成 DataTable或者DataSet,然后插入数据库


我有 

<DATE>
<RS>
<JGBM>机构编码</JGBM>
<JGMC>机构名称</JGMC>
<LXR>联系人</LXR>
<GZC_QDSWYWZGSJ>取得涉外业务资格时间</GZC_QDSWYWZGSJ>
<BZ>备注</BZ>
</RS>
<RS>
<JGBM>机构编码</JGBM>
<JGMC>机构名称</JGMC>
<LXR>联系人</LXR>
<GZC_QDSWYWZGSJ>取得涉外业务资格时间</GZC_QDSWYWZGSJ>
<BZ>备注</BZ>
</RS>
<RS>
<JGBM>机构编码</JGBM>
<JGMC>机构名称</JGMC>
<LXR>联系人</LXR>
<GZC_QDSWYWZGSJ>取得涉外业务资格时间</GZC_QDSWYWZGSJ>
<BZ>备注</BZ>
</RS>
  </DATE>
</RESULT>


我有这样一个格式的 字符串, 一个<RS></RS>里面是一条数据,怎么把它一条条的插入到对应的数据库里面去啊。。。SqlDataAapter??
求帮忙。。。求学啊
XML String dataset 数据库 datatable --------------------编程问答-------------------- 先解析xml,把数据都拿出来 --------------------编程问答-------------------- 首先解决的是 你要怎么解析这个XML
第一 你可以使用 .net 提供xml序列化。
第二 自己手写解析(使用XPath或Linq)。 --------------------编程问答--------------------
string xmlStr = @"<DATE>
<RS>
<JGBM>机构编码</JGBM>
<JGMC>机构名称</JGMC>
<LXR>联系人</LXR>
<GZC_QDSWYWZGSJ>取得涉外业务资格时间</GZC_QDSWYWZGSJ>
<BZ>备注</BZ>
</RS>
<RS>
<JGBM>机构编码</JGBM>
<JGMC>机构名称</JGMC>
<LXR>联系人</LXR>
<GZC_QDSWYWZGSJ>取得涉外业务资格时间</GZC_QDSWYWZGSJ>
<BZ>备注</BZ>
</RS>
<RS>
<JGBM>机构编码</JGBM>
<JGMC>机构名称</JGMC>
<LXR>联系人</LXR>
<GZC_QDSWYWZGSJ>取得涉外业务资格时间</GZC_QDSWYWZGSJ>
<BZ>备注</BZ>
</RS>
  </DATE>";
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(xmlStr);
                foreach (XmlNode xn in xmlDoc.SelectNodes("/DATE/RS"))
                {
                    string JGBM = xn.SelectSingleNode("JGBM").InnerText;//机构编码
                    string JGMC = xn.SelectSingleNode("JGMC").InnerText;//机构名称
                }
--------------------编程问答--------------------
引用 3 楼 Return_false 的回复:
string xmlStr = @"<DATE>
<RS>
<JGBM>机构编码</JGBM>
<JGMC>机构名称</JGMC>
<LXR>联系人</LXR>
<GZC_QDSWYWZGSJ>取得涉外业务资格时间</GZC_QDSWYWZGSJ>
<BZ>备注</BZ>
</RS>
<RS>
<JGBM>机构编码</JGBM>
<JGMC>机构名称</JGMC>
<LXR>联系人</LXR>
<GZC_QDSWYWZGSJ>取得涉外业务资格时间</GZC_QDSWYWZGSJ>
<BZ>备注</BZ>
</RS>
<RS>
<JGBM>机构编码</JGBM>
<JGMC>机构名称</JGMC>
<LXR>联系人</LXR>
<GZC_QDSWYWZGSJ>取得涉外业务资格时间</GZC_QDSWYWZGSJ>
<BZ>备注</BZ>
</RS>
  </DATE>";
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(xmlStr);
                foreach (XmlNode xn in xmlDoc.SelectNodes("/DATE/RS"))
                {
                    string JGBM = xn.SelectSingleNode("JGBM").InnerText;//机构编码
                    string JGMC = xn.SelectSingleNode("JGMC").InnerText;//机构名称
                }
这个,取到里面的值?? --------------------编程问答--------------------
引用 1 楼 vb763305825 的回复:
先解析xml,把数据都拿出来
要拿出来然后放到 datatable里面??拿出来后临时存储?? --------------------编程问答--------------------
引用 2 楼 mmm306306 的回复:
首先解决的是 你要怎么解析这个XML
第一 你可以使用 .net 提供xml序列化。
第二 自己手写解析(使用XPath或Linq)。
找了好多,你说的言简意赅啊!!1 --------------------编程问答--------------------
引用 6 楼 T_Knigth 的回复:
Quote: 引用 2 楼 mmm306306 的回复:

首先解决的是 你要怎么解析这个XML
第一 你可以使用 .net 提供xml序列化。
第二 自己手写解析(使用XPath或Linq)。
找了好多,你说的言简意赅啊!!1



 /**/
        /// <summary>
        /// 将Xml内容字符串转换成DataSet对象
        /// </summary>
        /// <param name="xmlStr">Xml内容字符串</param>
        /// <returns>DataSet对象</returns>
        public static DataSet CXmlToDataSet(string xmlStr)
        {
            if (!string.IsNullOrEmpty(xmlStr))
            {
                StringReader StrStream = null;
                XmlTextReader Xmlrdr = null;
                try
                {
                    DataSet ds = new DataSet();
                    //读取字符串中的信息
                    StrStream = new StringReader(xmlStr);
                    //获取StrStream中的数据
                    Xmlrdr = new XmlTextReader(StrStream);
                    //ds获取Xmlrdr中的数据                
                    ds.ReadXml(Xmlrdr);
                    return ds;
                }
                catch (Exception e)
                {
                    throw e;
                }
                finally
                {
                    //释放资源
                    if (Xmlrdr != null)
                    {
                        Xmlrdr.Close();
                        StrStream.Close();
                        StrStream.Dispose();
                    }
                }
            }
            else
            {
                return null;
            }
        }

调用

 string xmlStr = @"<DATE>
<RS>
<JGBM>机构编码</JGBM>
<JGMC>机构名称</JGMC>
<LXR>联系人</LXR>
<GZC_QDSWYWZGSJ>取得涉外业务资格时间</GZC_QDSWYWZGSJ>
<BZ>备注</BZ>
</RS>
<RS>
<JGBM>机构编码</JGBM>
<JGMC>机构名称</JGMC>
<LXR>联系人</LXR>
<GZC_QDSWYWZGSJ>取得涉外业务资格时间</GZC_QDSWYWZGSJ>
<BZ>备注</BZ>
</RS>
<RS>
<JGBM>机构编码</JGBM>
<JGMC>机构名称</JGMC>
<LXR>联系人</LXR>
<GZC_QDSWYWZGSJ>取得涉外业务资格时间</GZC_QDSWYWZGSJ>
<BZ>备注</BZ>
</RS>
  </DATE>";

            DataTable dt = new DataTable();
            dt = CXmlToDataSet(xmlStr).Tables[0];
--------------------编程问答-------------------- 为什么不直接解析XML后遍历,然后插入数据库

而非要中间在转换成DataTable呢? --------------------编程问答-------------------- 3L正解

取到数据行1  插入数据库
取到数据行2  插入数据库
............ --------------------编程问答--------------------
引用 8 楼 Return_false 的回复:
为什么不直接解析XML后遍历,然后插入数据库

而非要中间在转换成DataTable呢?


引用 8 楼 Return_false 的回复:
为什么不直接解析XML后遍历,然后插入数据库

而非要中间在转换成DataTable呢?
 字段有点多啊。。。。而且你这个如果一个字段改了。。那。。先试试7楼的。。谢谢啊,嘎嘎 --------------------编程问答-------------------- Mark xml 
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,