📄 xmlpeopleprovider.cs
字号:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Xml;
using System.Xml.Schema;
using System.IO;
using System.Collections.Generic;
/// <summary>
/// 人员数据的XML数据提供者
/// </summary>
public class XmlPeopleProvider : PeopleProvider
{
private string _xmlFile;
private string _xsdFile;
/// <summary>
/// 公共构造函数,用于从Web.Config配置文件中获取Xml文件和Schema文件的路径
/// </summary>
public XmlPeopleProvider()
{
SmallBusinessDataProvidersSection sec = (ConfigurationManager.GetSection("SmallBusinessDataProviders")) as SmallBusinessDataProvidersSection;
string xmlFile = sec.PeopleProviders[sec.PeopleProviderName].Parameters["dataFile"];
string xsdFile = sec.PeopleProviders[sec.PeopleProviderName].Parameters["schemaFile"];
//将这两个文件的路径转换为相对路径并赋给私有变量_xmlFile和_xsdFile。
_xmlFile = HttpContext.Current.Request.MapPath("~/App_Data/" + xmlFile);
_xsdFile = HttpContext.Current.Request.MapPath("~/App_Data/schemas/" + xsdFile);
}
/// <summary>
/// 从XML文件中获取所有的人员数据列表。
/// </summary>
/// <returns></returns>
public override List<Person> GetAllPersons()
{
DataSet dataSet = Util.ReadAndValidateXml(_xmlFile, _xsdFile);
List<Person> personList = new List<Person>();
//遍历数据表,用DataSet中的数据填充person实体对象。
foreach (DataTable t in dataSet.Tables)
{
foreach (DataRow r in t.Rows)
{
if (r["id"] is DBNull || r["visible"] is DBNull || r["firstName"] is DBNull || r["firstName"] is DBNull)
throw new InvalidOperationException(Messages.PersonRequiredAttributesMissing);
//(string)r["visible"]
Person curr = new Person((string)r["id"], (bool)r["visible"], (string)r["firstName"], (string)r["lastName"]);
curr.MiddleName = (r["middleName"] is DBNull) ? String.Empty : (string)r["middleName"];
curr.Title = (r["title"] is DBNull) ? String.Empty : (string)r["title"];
curr.Description = (r["description"] is DBNull) ? String.Empty : (string)r["description"];
curr.Email = (r["email"] is DBNull) ? String.Empty : (string)r["email"];
curr.Phone = (r["phone"] is DBNull) ? String.Empty : (string)r["phone"];
curr.Fax = (r["fax"] is DBNull) ? String.Empty : (string)r["fax"];
curr.StreetAddress = (r["streetAddress"] is DBNull) ? String.Empty : (string)r["streetAddress"];
curr.City = (r["city"] is DBNull) ? String.Empty : (string)r["city"];
curr.State = (r["state"] is DBNull) ? String.Empty : (string)r["state"];
curr.PostalCode = (r["postalCode"] is DBNull) ? String.Empty : (string)r["postalCode"];
curr.Country = (r["country"] is DBNull) ? String.Empty : (string)r["country"];
curr.ImageUrl = (r["imageUrl"] is DBNull) ? String.Empty : (string)r["imageUrl"];
curr.ImageAltText = (r["imageAltText"] is DBNull) ? String.Empty : (string)r["imageAltText"];
//添加到泛型列表。
personList.Add(curr);
}
}
//返回该范型列表
return personList;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -