在Web应用程序中导入Xml文件到数据库

本文关键字:文件 数据库 Xml 导入 Web 应用程序 | 更新日期: 2023-09-27 17:54:00

我正在尝试读取xml到数据库。我在代码的第1行得到systemnullreferenceException错误:

StreamReader reader = new StreamReader(System.Web.HttpContext.Current.Server.MapPath("File.xml"));
string connStr = ConfigurationManager.ConnectionStrings["SERVERCONNECTION" +
                       "connection timeout=30"].ConnectionString;
DataSet ds = new DataSet();
ds.ReadXml(reader);
string strxml = XDocument.Load(reader).ToString();
SqlConnection sqlconn = new SqlConnection(connStr);
SqlCommand sqlcmd = new SqlCommand();
sqlcmd.Connection = sqlconn;
sqlcmd.CommandType = CommandType.StoredProcedure;
sqlcmd.CommandText = "loadXML";
sqlcmd.Parameters.AddWithValue("@xmlstr", strxml);
sqlconn.Open();
sqlcmd.ExecuteNonQuery();
sqlconn.Close();

在Web应用程序中导入Xml文件到数据库

为了从Xml文件中读取XmlDocument,您可以使用以下ASP.NET/C#代码片段:

#region Read XML Document from file, ignore comments
/// <summary>
/// Read XML Document from file, ignore comments
/// </summary>
/// <param name="filePath">string</param>
/// <returns>XmlDocument</returns>
public static XmlDocument ReadXML(string filePath)
{
    XmlReaderSettings readerSettings;
    try
    {
        // check if document exists, otherwise exit
        if (!File.Exists(file)) { return null; }
        // reader settings to ignore comments
        readerSettings = new XmlReaderSettings();
        readerSettings.IgnoreComments = true;
        // load xml document
        using (XmlReader reader = XmlReader.Create(file, readerSettings))
        {
            XmlDocument _xmlDoc = new XmlDocument();
            _xmlDoc.Load(reader);
            return _xmlDoc;
        }
    }
    catch { return null; }
    finally { readerSettings = null; }
}
#endregion

我还建议将您的文件File.xml放在ASP中。. NET专用App_Data文件夹。文件的完整路径可以使用以下语句组成:

string _fileFullPath = String.Concat (AppDomain.CurrentDomain.BaseDirectory, "App_Data/File.xml");

或者,您可以使用Server.MapPath()方法(上面显示的方法要快得多)。