我是asp.net的nube。这就是我想要实现的目标。我想将以下XML数据写入sql server数据库中的单个表。
- <RaceDay RaceDayDate="2012-05-16T00:00:00" Year="2012" Month="5" Day="16" DayOfTheWeek="Wednesday" MonthLong="May" IsCurrentDay="1" IsPresaleMeeting="0" ServerTime="2012-05-16T16:47:30.033">
- <Race RaceNo="7" RaceTime="2012-05-16T16:36:00" CloseTime="2012-05-16T16:40:08.107" RaceName="F&M BM 70 HANDICAP" Distance="1200" SubFav="1" RaceDisplayStatus="PAYING" WeatherChanged="N" WeatherCond="1" WeatherDesc="Fine" TrackChanged="N" TrackCond="1" TrackDesc="Good" TrackRating="3" TrackRatingChanged="N">
- <TipsterTip TipsterId="0" Tips="1">
<Tipster TipsterName="LATE MAIL" />
</TipsterTip>
- <TipsterTip TipsterId="1" Tips="8-5-3-7">
<Tipster TipsterName="RADIO TAB" />
</TipsterTip>
- <TipsterTip TipsterId="2" Tips="1-10-9-2">
<Tipster TipsterName="KEVIN CASEY" />
</TipsterTip>
- <Pool PoolType="EX" Available="Y" Abandoned="N" PoolDisplayStatus="PAYING" PoolTotal="3734.00" JPotInGross="0.00" JPotOutGross="0.00" LastCalcTime="2012-05-16T16:36:57" CalcTime="2012-05-16T16:41:31" StatDiv="0">
- <Dividend DivId="62406790" DivAmount="80.8000">
<DivResult LegNo="1" RunnerNo="7" />
<DivResult LegNo="2" RunnerNo="5" />
</Dividend>
</Pool>
- <Pool PoolType="F4" Available="Y" Abandoned="N" PoolDisplayStatus="PAYING" PoolTotal="3492.00" JPotInGross="0.00" JPotOutGross="1397.16" LastCalcTime="2012-05-16T16:36:57" CalcTime="2012-05-16T16:41:31" StatDiv="0">
- <Dividend DivId="62406797" DivAmount="10828.0000">
<DivResult LegNo="1" RunnerNo="7" />
<DivResult LegNo="2" RunnerNo="5" />
<DivResult LegNo="3" RunnerNo="13" />
<DivResult LegNo="4" RunnerNo="1" />
</Dividend>
</Pool>
- <Pool PoolType="QN" Available="Y" Abandoned="N" PoolDisplayStatus="PAYING" PoolTotal="7029.00" JPotInGross="0.00" JPotOutGross="0.00" LastCalcTime="2012-05-16T16:36:57" CalcTime="2012-05-16T16:41:31" StatDiv="0">
- <Dividend DivId="62406785" DivAmount="68.5000">
<DivResult LegNo="1" RunnerNo="5" />
<DivResult LegNo="2" RunnerNo="7" />
</Dividend>
</Pool>
</Race>
</Meeting>
</RaceDay>
有人可以告诉我如何读取我的xml文件并将数据展平并将其插入sql数据库中合适的表中。 提前谢谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
首先,您必须解析XML并将其存储到自定义C#对象中,或者您可以直接将XML传递给存储过程并在那里进行编码以将其保存到DB中。
将xml传递给存储过程并对其进行操作有点困难所以我建议在C#中解析它然后获取自定义对象。一旦你得到它,你可以做任何你想做的事。
以下是我的文章,它准确地解释了您的需求。 Read XML file in ASP.NET(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;
}