using Abp.Logging;
using System.Data;
using System.Xml;
namespace VberZero.Tools.FileHelpers;
///
/// XML形式的字符串、XML文江转换成DataSet、DataTable格式
///
public static class XmlToData
{
/**////
/// 将Xml内容字符串转换成DataSet对象
///
/// Xml内容字符串
/// DataSet对象
public static DataSet CXmlToDataSet(this string xmlStr)
{
if (!string.IsNullOrEmpty(xmlStr))
{
StringReader StrStream = null;
XmlTextReader Xmlns = null;
try
{
DataSet ds = new DataSet();
//读取字符串中的信息
StrStream = new StringReader(xmlStr);
//获取StrStream中的数据
Xmlns = new XmlTextReader(StrStream);
//ds获取Xmlns中的数据
ds.ReadXml(Xmlns);
return ds;
}
catch (Exception e)
{
LogHelper.LogException(e);
}
finally
{
//释放资源
if (Xmlns != null)
{
Xmlns.Close();
StrStream.Close();
StrStream.Dispose();
}
}
}
return null;
}
/**////
/// 将Xml字符串转换成DataTable对象
///
/// Xml字符串
/// Table表索引
/// DataTable对象
public static DataTable CXmlToDataTable(this string xmlStr, int tableIndex)
{
return CXmlToDataSet(xmlStr).Tables[tableIndex];
}
/**////
/// 将Xml字符串转换成DataTable对象
///
/// Xml字符串
/// DataTable对象
public static DataTable CXmlToDataTable(this string xmlStr)
{
return CXmlToDataSet(xmlStr).Tables[0];
}
/**////
/// 读取Xml文件信息,并转换成DataSet对象
///
///
/// DataSet ds = new DataSet();
/// ds = CXmlFileToDataSet("C:/XML/upload.xml");
///
/// Xml文件地址(绝对路径)
/// DataSet对象
public static DataSet CXmlFileToDataSet(this string xmlFilePath)
{
if (!string.IsNullOrEmpty(xmlFilePath))
{
//string path = HttpContext.Current.Server.MapPath(xmlFilePath);
string path = xmlFilePath;
StringReader StrStream = null;
XmlTextReader Xmlns = null;
try
{
XmlDocument xmlDoc = new XmlDocument();
//根据地址加载Xml文件
xmlDoc.Load(path);
DataSet ds = new DataSet();
//读取文件中的字符流
StrStream = new StringReader(xmlDoc.InnerXml);
//获取StrStream中的数据
Xmlns = new XmlTextReader(StrStream);
//ds获取Xmlns中的数据
ds.ReadXml(Xmlns);
return ds;
}
catch (Exception e)
{
LogHelper.LogException(e);
}
finally
{
//释放资源
if (Xmlns != null)
{
Xmlns.Close();
StrStream.Close();
StrStream.Dispose();
}
}
}
return null;
}
/**////
/// 读取Xml文件信息,并转换成DataTable对象
///
/// xml文江路径
/// Table索引
/// DataTable对象
public static DataTable CXmlFileToDataTable(this string xmlFilePath, int tableIndex)
{
return CXmlFileToDataSet(xmlFilePath).Tables[tableIndex];
}
/**////
/// 读取Xml文件信息,并转换成DataTable对象
///
/// xml文江路径
/// DataTable对象
public static DataTable CXmlFileToDataTable(this string xmlFilePath)
{
return CXmlFileToDataSet(xmlFilePath).Tables[0];
}
}