XML文档内容:
<?xml version="1.0" encoding="gb2312"?>
<userss>
<users id="1" isAutoLogin="true">用户节点<loginname username="starrycheng" ID="1">用户名 </loginname></users>
</userss>然后:
private void button11_Click(object sender, EventArgs e)
{
string xmlFileName = Application.StartupPath + @"\Release\users.xml";
DataTable dt = XMLHelper.CXmlToDataTable(xmlFileName);
dataGridView1.DataSource = dt;
} /// <summary>
/// 读取Xml文件信息,并转换成DataTable对象
/// </summary>
/// <param name="xmlFilePath">xml文江路径</param>
/// <returns>DataTable对象</returns>
public static DataTable CXmlToDataTable(string xmlFilePath)
{
return CXmlFileToDataSet(xmlFilePath).Tables[0];
}
/// <summary>
/// 读取Xml文件信息,并转换成DataSet对象
/// </summary>
/// <res>
/// DataSet ds = new DataSet();
/// ds = CXmlFileToDataSet("/XML/upload.xml");
/// </res>
/// <param name="xmlFilePath">Xml文件地址</param>
/// <returns>DataSet对象</returns>
public static DataSet CXmlFileToDataSet(string xmlFilePath)
{
if (!string.IsNullOrEmpty(xmlFilePath))
{
string path = xmlFilePath;
StringReader StrStream = null;
XmlTextReader Xmlrdr = null;
try
{
XmlDocument xmldoc = new XmlDocument();
//根据地址加载Xml文件
xmldoc.Load(path); DataSet ds = new DataSet();
//读取文件中的字符流
StrStream = new StringReader(xmldoc.InnerXml);
//获取StrStream中的数据
Xmlrdr = new XmlTextReader(StrStream);
//ds获取Xmlrdr中的数据
ds.ReadXml(Xmlrdr);
return ds;
}
catch (Exception e)
{
throw e;
}
finally
{
//释放资源
if (Xmlrdr != null)
{
Xmlrdr.Close();
StrStream.Close();
StrStream.Dispose();
}
}
}
else
{
return null;
}
}
在DataGridView中显示的结果是:
第一列 第二列
表头(列名行) id isAutoLogin
第一行(列值) 1 true
问题:这是怎么从XML中取的值,路径指向的是“整个XML”文档啊???为什么只取出了“users”节点的属性,生成了DataTable,而不去取它的根节点“userss”和它的子节点“loginname”的属性???
<?xml version="1.0" encoding="gb2312"?>
<userss>
<users id="1" isAutoLogin="true">用户节点<loginname username="starrycheng" ID="1">用户名 </loginname></users>
</userss>然后:
private void button11_Click(object sender, EventArgs e)
{
string xmlFileName = Application.StartupPath + @"\Release\users.xml";
DataTable dt = XMLHelper.CXmlToDataTable(xmlFileName);
dataGridView1.DataSource = dt;
} /// <summary>
/// 读取Xml文件信息,并转换成DataTable对象
/// </summary>
/// <param name="xmlFilePath">xml文江路径</param>
/// <returns>DataTable对象</returns>
public static DataTable CXmlToDataTable(string xmlFilePath)
{
return CXmlFileToDataSet(xmlFilePath).Tables[0];
}
/// <summary>
/// 读取Xml文件信息,并转换成DataSet对象
/// </summary>
/// <res>
/// DataSet ds = new DataSet();
/// ds = CXmlFileToDataSet("/XML/upload.xml");
/// </res>
/// <param name="xmlFilePath">Xml文件地址</param>
/// <returns>DataSet对象</returns>
public static DataSet CXmlFileToDataSet(string xmlFilePath)
{
if (!string.IsNullOrEmpty(xmlFilePath))
{
string path = xmlFilePath;
StringReader StrStream = null;
XmlTextReader Xmlrdr = null;
try
{
XmlDocument xmldoc = new XmlDocument();
//根据地址加载Xml文件
xmldoc.Load(path); DataSet ds = new DataSet();
//读取文件中的字符流
StrStream = new StringReader(xmldoc.InnerXml);
//获取StrStream中的数据
Xmlrdr = new XmlTextReader(StrStream);
//ds获取Xmlrdr中的数据
ds.ReadXml(Xmlrdr);
return ds;
}
catch (Exception e)
{
throw e;
}
finally
{
//释放资源
if (Xmlrdr != null)
{
Xmlrdr.Close();
StrStream.Close();
StrStream.Dispose();
}
}
}
else
{
return null;
}
}
在DataGridView中显示的结果是:
第一列 第二列
表头(列名行) id isAutoLogin
第一行(列值) 1 true
问题:这是怎么从XML中取的值,路径指向的是“整个XML”文档啊???为什么只取出了“users”节点的属性,生成了DataTable,而不去取它的根节点“userss”和它的子节点“loginname”的属性???
<?xml version="1.0" encoding="gb2312"?>
<userss>
<users id="1" isAutoLogin="true" Name="用户节点"><loginname username="starrycheng" ID="1">用户名 </loginname></users>
</userss>
谢谢您,谢谢。
<?xml version="1.0" encoding="gb2312"?>
<userss>
<users id="1" isAutoLogin="true" Name="用户节点"></users>
<loginname username="starrycheng" ID="1">用户名 </loginname>
</userss>如果是这样的平行关系呢?两个节点的属性不同,这是几张表???