测试用例
static void Main(string[] args)
{
DataTable _dtImg = new DataTable("DataTableName");
_dtImg.Columns.Add("列名1");
_dtImg.Columns.Add("列名2");
_dtImg.Columns.Add("列名3");
DataRow newRow = _dtImg.NewRow();
newRow["列名1"] = "值1";
newRow["列名2"] = "值2";
newRow["列名3"] = "值3";
_dtImg.Rows.Add(newRow);
DataTableToXMLPath(_dtImg,"main.xml","");
string pathname = AppDomain.CurrentDomain.BaseDirectory+ "main.xml";
DataTable dataTable= ConvertXMLToDataDataTable(pathname);
foreach (DataRow item in dataTable.Rows)
{
var ss= item["列名1"];
}
var str= dataTable.Rows[0]["列名1"];
}
将DataTable 转成 用于xml
/// <summary>
/// DataTable 生成XML文件
/// </summary>
/// <param name="dtTable">DataTable _dtImg = new DataTable("imgdata"); DataRow newRow = this._dtImg.NewRow();newRow["LocalPath"] = "名字";</param>
/// <param name="strXMLName">XML名称 例如: + "tmpimgName.xml"</param>
/// <param name="strSaveXMLPath">保存的文件夹地址 例如: "Image\\unfinished\\"</param>
/// <returns></returns>
public static bool DataTableToXMLPath(DataTable dtTable, string strXMLName, string strSaveXMLPath)
{
MemoryStream stream = null;
XmlTextWriter writer = null;
StreamWriter sw = null;
string pathname = AppDomain.CurrentDomain.BaseDirectory + strSaveXMLPath;
try
{
if (!Directory.Exists(pathname)) Directory.CreateDirectory(pathname);
stream = new MemoryStream();
writer = new XmlTextWriter(stream, Encoding.UTF8);
dtTable.WriteXml(writer, XmlWriteMode.WriteSchema);
int nCount = (int)stream.Length;
byte[] arr = new byte[nCount];
stream.Seek(0, SeekOrigin.Begin);
stream.Read(arr, 0, nCount);
UTF8Encoding utf = new UTF8Encoding();
string strContent = utf.GetString(arr).Trim();
sw = new StreamWriter(pathname + strXMLName);
sw.Write(strContent);
return true;
}
catch
{
return false;
}
finally
{
if (writer != null)
{
writer.Close();
}
if (sw != null)
{
sw.Close();
}
}
}
读取 xml 文件转成 DataTable
/// <summary>
/// 根据指定的地址获取xml文件进行转换 文件地址
/// </summary>
/// <param name="xmlPath"></param>
/// <returns></returns>
private static DataTable ConvertXMLToDataDataTable(string xmlPath)
{
StringReader stream = null;
XmlTextReader reader = null;
try
{
XmlDocument xmldoc = new XmlDocument();
//根据地址加载Xml文件
xmldoc.Load(xmlPath);
DataTable dt = new DataTable();
stream = new StringReader(xmldoc.InnerXml);
reader = new XmlTextReader(stream);
dt.ReadXml(reader);
return dt;
}
catch
{
return null;
}
finally
{
if (reader != null)
reader.Close();
if (stream != null)
stream.Close();
}
}