XML文件中XmlDocument、getXmlNodeValue、XmlNodeList、XmlNode、InnerText 读取xmlDataSet直接导入Oracl 20200302监听项目

6 篇文章 0 订阅
1 篇文章 0 订阅
<xml>
<Head>
<rq>20200302</rq>
</Head>
<Body>
<dm>00101</dm>
<mc>名称1</mc>
</Body>
</xml>
XmlDocument xmlDoc = new XmlDocument();//初始化一个xml实例
        xmlDoc.Load(sPath);//打开该路径下的xml文件。
  string sXml = getXmlNodeValue(str, "Body");

sk.rq = getXmlNodeValue(sXml, “rq”);//日期
sk.dm = getXmlNodeValue(sXml, “dm”);//代码
sk.mc = getXmlNodeValue(sXml, “mc”);//名称

string sXmlmx = sXml.Substring(sXml.IndexOf(""), sXml.IndexOf("") - sXml.IndexOf("") + 5);
if (sXmlmx != “”)
{
XmlDocument xmlmx = new XmlDocument();//初始化一个xml实例
xmlmx.LoadXml(sXmlmx);
DataSet dt_mx = ToDataSet(xmlmx);
string sql = “select rq,dm,mc from sk_mx”;
oracleHelp.MultiInsertData(dt_mx, sql);
}

///
/// 读取结点内容
///
/// xml串
/// 节点名称
/// 节点内容
private string getXmlNodeValue(string sXmlstring, string sNodeName)
{
//读取结点内容
string sValue = “”;
XmlDocument xmlDoc = new XmlDocument();//初始化一个xml实例
xmlDoc.LoadXml(sXmlstring);
XmlNodeList xmlNodeList = xmlDoc.GetElementsByTagName(sNodeName);
foreach (XmlNode xmlNode in xmlNodeList)
{
sValue = xmlNode.InnerText;
}
return sValue;
}

///
/// xml读取dataset后直接导入Oracle
///
/// xml串
///
public DataSet ToDataSet(XmlDocument xmlDoc)
{
DataTable table = new DataTable();
table.Columns.Add(“rq”, typeof(String));
table.Columns.Add(“dm”, typeof(String));
table.Columns.Add(“mc”, typeof(String));

        var nodes = xmlDoc.DocumentElement.SelectNodes("//mx");
        foreach (XmlNode node in nodes)
        {
            var row = table.NewRow();
            row[0] = node.ChildNodes[0].InnerText;
            row[1] = node.ChildNodes[1].InnerText;
            row[2] = node.ChildNodes[2].InnerText;
            table.Rows.Add(row);
        }
        DataSet ds = new DataSet();
        ds.Tables.Add(table);
        return ds;
    }

cs文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WinFormMain
{
public class SK
{
private string _rq;
private string _Dm;
private string _mc;

    /// <summary>
    /// 日期
    /// </summary>
    public string rq
    {
        get { return _rq; }
        set { _rq = value; }
    }


    /// <summary>
    /// 代码
    /// </summary>
    public string Dm
    {
        get { return _Dm; }
        set { _Dm = value; }
    }

    /// <summary>
    /// 名称
    /// </summary>
    public string mc
    {
        get { return _mc; }
        set { _mc = value; }
    }

}

}

cs文件 oracleHelp

#region --多行dataset导入Oracle
public static void MultiInsertData(DataSet ds,string sql)
{
//sql必须与ds中的一致

        DataTable dt = ds.Tables[0];
        OracleConnection conn = new OracleConnection(_ConnStr);
        OracleCommand cmd = new OracleCommand(sql, conn);
        conn.Open();
        OracleDataAdapter da = new OracleDataAdapter(cmd);
        OracleCommandBuilder cb = new OracleCommandBuilder(da);

        da.Update(dt);
        conn.Close();
        conn.Dispose();

    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值