【发布时间】:2012-12-11 10:10:09
【问题描述】:
我正在使用 asp.net VB,我有一个包含一组数据的 XML 文件,我想在数据列表之类的东西中使用它,通常你会使用数据库我想使用 XML 文件来生成信息。
有人知道怎么做吗,我已经阅读过有关转换文件的信息,但我肯定会格式化控件中的信息吗?
该文件有多个记录,因此在某些情况下我需要通过数据源对信息执行查询。
【问题讨论】:
我正在使用 asp.net VB,我有一个包含一组数据的 XML 文件,我想在数据列表之类的东西中使用它,通常你会使用数据库我想使用 XML 文件来生成信息。
有人知道怎么做吗,我已经阅读过有关转换文件的信息,但我肯定会格式化控件中的信息吗?
该文件有多个记录,因此在某些情况下我需要通过数据源对信息执行查询。
【问题讨论】:
我可能会研究 XML 序列化和反序列化。使用反序列化,您可以将 XML 读入包含您自己的类对象列表的 List(T) 对象,并将其用作应用程序的数据源。
这是一个您可能会发现有用的链接:
http://msdn.microsoft.com/en-us/library/ms731073.aspx
希望这会有所帮助。
【讨论】:
Dim ds As New DataSet()
ds.ReadXml(MapPath("data.xml"))
【讨论】:
首先您必须解析 XML 并将其存储到自定义 C# 对象中,或者您可以直接将 XML 传递给您的存储过程并在那里进行编码以将其保存到 DB 中。
将 xml 传递给存储过程并在那里操作它有点困难,所以我建议在 C# 中解析它,然后获取一个自定义对象。一旦你得到它,你就可以为所欲为。
以下是解析 XML 文件并从中生成自定义 C# 对象的示例代码。
public CatSubCatList GenerateCategoryListFromProductFeedXML()
{
string path = System.Web.HttpContext.Current.Server.MapPath(_xmlFilePath);
XDocument xDoc = XDocument.Load(path);
XElement xElement = XElement.Parse(xDoc.ToString());
List<Category> lstCategory = xElement.Elements("Product").Select(d => new Category
{
Code = Convert.ToString(d.Element("CategoryCode").Value),
CategoryPath = d.Element("CategoryPath").Value,
Name = GetCateOrSubCategory(d.Element("CategoryPath").Value, 0), // Category
SubCategoryName = GetCateOrSubCategory(d.Element("CategoryPath").Value, 1) // Sub Category
}).GroupBy(x => new { x.Code, x.SubCategoryName }).Select(x => x.First()).ToList();
CatSubCatList catSubCatList = GetFinalCategoryListFromXML(lstCategory);
return catSubCatList;
}
【讨论】: