Xdocument正在尝试创建XML文件,但ListBox出现问题

Xdocument正在尝试创建XML文件,但ListBox出现问题,xml,linq,linq-to-xml,Xml,Linq,Linq To Xml,因此,我决定使用XDocument创建一个XML文件,在我遇到一个必须在列表框中查找所有选定项的部分之前,该文件一直工作得很好。我不确定该如何格式化此文件 XDocument xmlDoc = new XDocument( new XDeclaration("1.0", "utf-8", "yes"), new XComment("Created: " + DateTime.Now.ToString()),

因此,我决定使用XDocument创建一个XML文件,在我遇到一个必须在列表框中查找所有选定项的部分之前,该文件一直工作得很好。我不确定该如何格式化此文件

     XDocument xmlDoc = new XDocument(
                    new XDeclaration("1.0", "utf-8", "yes"),
                    new XComment("Created: " + DateTime.Now.ToString()),
                    new XElement("Trip",
                        new XElement("TripDetails",
                            new XElement("Departure", txtDeparture.Text),
                            new XElement("Return", txtReturn.Text),                     
                             new XElement("Purpose", txtPurpose.Text),
                             new XElement("Region", ddlRegion.SelectedValue.ToString()),
  //Not working                            
                             new XElement("Countries", 
                             foreach(string x in lstCountry.SelectedValue)
                             {
                                 new XElement("Country",x);
                             }
                            )
                          )
                        )  
                       );

我想在Countries

下的子节点中输出每个选定的国家,LINQ to XML在这方面非常好-如果您为其提供一段可编辑的内容,它将进行迭代。试试这个:

XDocument xmlDoc = new XDocument(
       new XDeclaration("1.0", "utf-8", "yes"),
       new XComment("Created: " + DateTime.Now.ToString()),
       new XElement("Trip",
           new XElement("TripDetails",
               new XElement("Departure", txtDeparture.Text),
               new XElement("Return", txtReturn.Text),                     
               new XElement("Purpose", txtPurpose.Text),
               new XElement("Region", ddlRegion.SelectedValue.ToString()),
               new XElement("Countries",
                    lstCountry.SelectedValues
                              .Cast<string>()
                              .Select(x => new XElement("Country", x))
              )
          )  
      );
XDocument xmlDoc=新XDocument(
新的XDE声明(“1.0”、“utf-8”、“是”),
新建XComment(“已创建:+DateTime.Now.ToString()),
新XElement(“旅行”,
新XElement(“TripDetails”,
新的XElement(“离开”,txtdeefation.Text),
新的XElement(“Return”,txtreurn.Text),
新XElement(“目的”,txtPurpose.Text),
新XElement(“Region”,ddlRegion.SelectedValue.ToString()),
新概念(“国家”,
lstCountry.SelectedValues
.Cast()
.选择(x=>new-XElement(“国家”,x))
)
)  
);

请注意,我已将
SelectedValue
更改为
SelectedValues
,以获取多个值。如果这不是您想要的,您应该能够相应地调整它。

LINQ to XML在这方面非常好-如果您为它提供了一段可编辑的内容,它将进行迭代。尝试以下操作:

XDocument xmlDoc = new XDocument(
       new XDeclaration("1.0", "utf-8", "yes"),
       new XComment("Created: " + DateTime.Now.ToString()),
       new XElement("Trip",
           new XElement("TripDetails",
               new XElement("Departure", txtDeparture.Text),
               new XElement("Return", txtReturn.Text),                     
               new XElement("Purpose", txtPurpose.Text),
               new XElement("Region", ddlRegion.SelectedValue.ToString()),
               new XElement("Countries",
                    lstCountry.SelectedValues
                              .Cast<string>()
                              .Select(x => new XElement("Country", x))
              )
          )  
      );
XDocument xmlDoc=新XDocument(
新的XDE声明(“1.0”、“utf-8”、“是”),
新建XComment(“已创建:+DateTime.Now.ToString()),
新XElement(“旅行”,
新XElement(“TripDetails”,
新的XElement(“离开”,txtdeefation.Text),
新的XElement(“Return”,txtreurn.Text),
新XElement(“目的”,txtPurpose.Text),
新XElement(“Region”,ddlRegion.SelectedValue.ToString()),
新概念(“国家”,
lstCountry.SelectedValues
.Cast()
.选择(x=>new-XElement(“国家”,x))
)
)  
);

请注意,我已将
SelectedValue
更改为
SelectedValues
,以获取多个值。如果这不是您想要的,您应该能够相应地进行调整。

非常感谢,但列表框中不包含SelectedValues的定义。不确定如何通过获取selected来获取多个值索引和无需强制转换需要新的XElement(“国家”,lstCountry.GetSelectedIndices()。选择(x=>新XElement(“国家”,x))非常感谢您的感谢,但是列表框没有包含selectedValues的定义。不知道如何通过获取SelectedDice和无需强制转换的新XElement(“Countries”,lstCountry.GetSelectedDices()。Select(x=>new XElement(“Country”,x))来获取多个值以实现此目的再次感谢