<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