XML文件中XmlDocument、getXmlNodeValue、XmlNodeList、XmlNode、InnerText 讀取xmlDataSet直接導入Oracl 20200302監聽項目

<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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章