读取xml最重要的要知道xml是那种写法
第一种写法:
<?xml version="1.0" encoding="utf-8" ?>
<ProvinceList>
<Province>
<Value>1</Value>
<ProvinceName>北京市</ProvinceName>
</Province>
<ProvinceList>
Linq语句:
XDocument doc= XDocument.Load(Server.MapPath("xxx.xml"));
var provincelist = (from p in doc.Descendants("Province")//Province为节点名字
select new
{
provinceid = p.Element("Value").Value, //Element通过节点直接取值
provincename = p.Element("ProvinceName").Value
});
DataTable dt = new DataTable();
dt.Columns.Add("Value", typeof(int));
dt.Columns.Add("ProvinceName", typeof(string));
DataRow dr = null;
foreach (var item in provincelist)
{
dr = dt.NewRow();
dr[0] = item.provinceid;
dr[1] = item.provincename;
dt.Rows.Add(dr);
}
return dt;
第二种xml
<?xml version="1.0" encoding="utf-8" ?>
<CityList>
<City Value="1" CityName="北京市" CityID="1" ProvinceID="1" />
</CityList>
Linq语句:
XDocument adList = XDocument.Load(Server.MapPath("Data.xml"));
var cityList= from a in adList .Descendants("CityList").Elements("City ")//在跟节点CityList查找City
.Where(w => w.Attribute("ProvinceID").Value == "1") //若要筛选就用上这个语句
select new
{
CityId=a.Attribute("Value").Value,
CityName=a.Attribute("CityName").Value
};
DataTable dtCity = new DataTable();
dtCity .Columns.Add("Value", typeof(int));
dtCity .Columns.Add("CityName", typeof(string));
DataRow dr = null;
foreach (var item incityList)
{
dr = dt.NewRow();
dr[0] = item.CityId;
dr[1] = item.CityName;
dtCity .Rows.Add(dr);
}
returndtCity ;