将创建 xml 文件更改为:使用 xmlreader 加载到数据表

Posted

技术标签:

【中文标题】将创建 xml 文件更改为:使用 xmlreader 加载到数据表【英文标题】:Change create xml file to : Load to datatable, using xmlreader 【发布时间】:2019-12-11 09:53:26 【问题描述】:

我正在使用 C# 在驱动器上创建 Xml file,然后将此文件的内容写入表中。但是现在我想读取Xml string并写入表,而不必创建文件然后将文件的内容写入表。

XmlDocument xdoc = new XmlDocument();
string fullFilePath = path + @"\Product.xml";
string Products;

Products = getProducts();
xdoc.LoadXml(Products);
xdoc.Save(String.Format(fullFilePath));

string connetionString = null;
SqlConnection connection;
SqlCommand command ;
SqlDataAdapter adpter = new SqlDataAdapter();
DataSet ds = new DataSet();
XmlReader xmlFile ;
string sql = null;

int product_ID = 0;
string Product_Name = null;
double product_Price = 0;

connetionString = "Data Source=servername;Initial Catalog=databasename;User ID=username;Password=password";

connection = new SqlConnection(connetionString);

xmlFile = XmlReader.Create("Product.xml", new XmlReaderSettings());
ds.ReadXml(xmlFile);
int i = 0;
connection.Open();
for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)

    product_ID = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[0]);
    Product_Name = ds.Tables[0].Rows[i].ItemArray[1].ToString();
    product_Price = Convert.ToDouble(ds.Tables[0].Rows[i].ItemArray[2]);
    sql = "insert into Product values(" + product_ID + ",'" + Product_Name + "'," + product_Price + ")";
    command = new SqlCommand(sql, connection);
    adpter.InsertCommand = command;
    adpter.InsertCommand.ExecuteNonQuery();

connection.Close();

无法读取 Xml string 内联以写入表中。

【问题讨论】:

我找不到您实际写入文件的位置。我看到您从内存中的数据库构建内容,但没有写操作。最少修改的方法通常是用内存流替换您用来保存文件的任何 FileStream。 为什么需要 XML?为什么不直接遍历Products 并将属性映射到数据库列? @Christopher xdoc.Save(...) 【参考方案1】:

使用 XmlDocument.Save() 将其保存到内存流中,然后使用 DataSet.ReadXml() 从该内存流中读取它。

【讨论】:

以上是关于将创建 xml 文件更改为:使用 xmlreader 加载到数据表的主要内容,如果未能解决你的问题,请参考以下文章

NIFI如何将uuid更改为文件名

将 Strings.xml 中的 String-Array 更改为 ArrayList

如何使用 XElement.Parse 解析 XML 而无需查看/将实体更改为字符?

如何将xml响应更改为json?

matlab xml文件交互

将 Java 类更改为存储过程