在单个xml文件中写入多个xml节点

时间:2012-05-11 10:07:15

标签: c# c#-4.0 linq-to-xml

我有使用LINQ to XML的代码。我希望每次都将XElement写入一个新的XML文件,以便其中的所有XML都存储在指定位置的XML文件中。

XElement xml = new XElement("contacts",
                    new XElement("contact", 
                        new XAttribute("contactId", "2"),
                        new XElement("firstName", "Barry"),
                        new XElement("lastName", "Gottshall")
                    ),
                    new XElement("contact", 
                        new XAttribute("contactId", "3"),
                        new XElement("firstName", "Armando"),
                        new XElement("lastName", "Valdes")
                    )
                );


Console.WriteLine(xml);

我wsh要附加xml变量并在其中添加更多节点,我尝试了下面的代码但是无法得到它,我希望写一下我在EveryComment List中得到的xml

 XElement xml;
                    foreach (string Dcomment in EveryComment) 
                    {
                        string commentDetail = "http://www.edmunds.com" + Dcomment;
                        WebClient wc1 = new WebClient();
                        try { 
                            string comm = wc1.DownloadString(commentDetail);
                            string[] time_sep = { @"<time itemprop=""dtreviewed"" datetime=", "</time></div>" };
                            string[] car_split = {@"<span itemprop=""itemreviewed"">",@"</span><br/>        <div class=""header-5"">Review</div>"};
                            string[] name_comment_split = {@"<div class=""crr_by"">By <strong itemprop=""reviewer"">","</strong> on <time itemprop=",@"<div class=""header-5"">Review</div>        <span itemprop=""description"">",@"<div class=""header-5"">Favorite Features</div>" };
                            string[] get_name_comment = comm.Replace("\n", "").Replace("\t", "").Split(name_comment_split, StringSplitOptions.None);
                            string[] get_car_name = comm.Replace("\n","").Replace("\t","").Split(car_split, StringSplitOptions.None);
                            //CAR NAME AT 1 INDEX
                            string perfor,comfi,fuel,fun,interi,exteri,made,reliable;
                            string[] get_time = comm.Split(time_sep, StringSplitOptions.None);//TIME AT 1TH INDEX
                            comm = comm.Replace(@"""", "").Replace("\n"," ").Replace("\t"," ").Replace(" ","").Replace("\r","");
                            //HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                            //doc.LoadHtml(comm);
                            //var links = doc.DocumentNode.Name="span".Select(n => n.["href"].Value).ToArray();
                            string[] comm_split = { "Performance<hr/><spanclass=ratingtitle=", "Comfort<hr/><spanclass=ratingtitle=", "FuelEconomy<hr/><spanclass=ratingtitle=", "Fun-to-Drive<hr/><spanclass=ratingtitle=", "InteriorDesign<hr/><spanclass=ratingtitle=", "ExteriorDesign<hr/><spanclass=ratingtitle=", "BuildQuality<hr/><spanclass=ratingtitle=", "Reliability</div><spanclass=rating-bigtitle=","<divclass=header-5>FavoriteFeatures</div>", "<divclass=header-5>SuggestedImprovements</div>" };
                            string[] features = comm.Split(comm_split, StringSplitOptions.None);
                            if (features[1].ElementAt(1) == '.')
                            {

                                perfor = features[1].Substring(0, 3);
                            }
                            else
                                perfor = features[1].Substring(0, 1);
                            if (features[2].ElementAt(1) == '.')
                            {

                                comfi = features[2].Substring(0, 3);
                            }
                            else
                                comfi = features[2].Substring(0, 1);
                            if (features[3].ElementAt(1) == '.')
                            {

                                fuel = features[3].Substring(0, 3);
                            }
                            else
                                fuel = features[3].Substring(0, 1);
                            if (features[4].ElementAt(1) == '.')
                            {

                                fun = features[5].Substring(0, 3);
                            }
                            else
                                fun = features[5].Substring(0, 1);
                            if (features[6].ElementAt(1) == '.')
                            {

                                interi = features[6].Substring(0, 3);
                            }
                            else
                                interi = features[6].Substring(0, 1);

                            if (features[7].ElementAt(1) == '.')
                            {

                                exteri = features[7].Substring(0, 3);
                            }
                            else
                                exteri = features[7].Substring(0, 1);

                            if (features[8].ElementAt(1) == '.')
                            {

                                reliable = features[8].Substring(0, 3);
                            }
                            else
                                reliable = features[8].Substring(0, 1);


               xml = new XElement("DOC", 
                    new XAttribute("Relevance", c1.relevance),
                    new XElement("Date", get_time[1]),
                    new XElement("Author", get_name_comment[1]),
                    new XElement("Text", get_name_comment[3]),
                    new XElement("Favourite",features[9]),
                    new XElement("Peformance",perfor),
                    new XElement("Fuel",fuel),
                    new XElement("Fun",fun),
                    new XElement("Interior",interi),
                    new XElement("Exterior",exteri),
                    new XElement("Reliability",reliable)
                );
                       // xml = new XElement(get_car_name

                        }
                        catch (Exception ex) 
                        {
                        }
                    }

2 个答案:

答案 0 :(得分:2)

xml.Save(path);

或者是否有更微妙的参与,这不是问题?

答案 1 :(得分:0)

我是这样做的 每个xelemnt我在循环结束时转换为字符串并继续汇总该字符串,循环后我通过字符串编写器在.xml文件中写入