我有一个相对简单的Winforms应用程序并使用C#。我一直在使用LINQ(system.xml.linq)...我已经成功地将文本框项目(单个项目)保存到我的xml文件中。
我有一个项目列表框,希望该列表保存为xml文件中的子节点。所以我的xml最终输出看起来像这样:
<items>
<centerName>My Center</centerName>
<poc>Mr. Jones</poc>
<servicedUnits>
<state>Texas</state>
<state>Iowa</state>
<state>Hawaii</state>
</servicedUnits>
</items>
我有这个代码,我一直用来写XML:
private void writeFCATSettings()
{
XDocument doc = new XDocument
(
new XElement
("Items",
new XElement("textBoxCenterName", textBoxCenterName.Text),
new XElement("textBoxContactFirstName", textBoxContactFirstName.Text),
new XElement("servicedUnits", "<listBoxServicedUnits.Items>")
)
);
doc.Save(@"Settings.xml");
}
我很确定我需要将代码放在括号内的列表框中进行迭代。
最后..我发现这段代码会迭代我的列表...但是如果我只是将它粘贴到空间中......它就不起作用了。
XElement servicedUnits = new XElement("ServicedUnits");
foreach (var item in listBoxServicedUnits.Items)
{
servicedUnits.Add(new XElement("unit", item));
}
XDocument document = new XDocument();
document.Add(servicedUnits);
感谢您的任何想法...
ER
答案 0 :(得分:0)
假设您的列表框项目是字符串,您可以这样做:
private void writeFCATSettings()
{
XDocument doc = new XDocument(
new XElement("Items",
new XElement("textBoxCenterName", textBoxCenterName.Text),
new XElement("textBoxContactFirstName", textBoxContactFirstName.Text),
new XElement("servicedUnits",
listBoxServicedUnits
.Items
.OfType<string>()
.Select(item => new XElement("unit", item)))));
doc.Save(@"Settings.xml");
}
或者,如果它们不是字符串或它们是混合类型,您可以这样做:
private void writeFCATSettings()
{
XDocument doc = new XDocument(
new XElement("Items",
new XElement("textBoxCenterName", textBoxCenterName.Text),
new XElement("textBoxContactFirstName", textBoxContactFirstName.Text),
new XElement("servicedUnits",
listBoxServicedUnits
.Items
.OfType<Object>()
.Select(x => TransformYouObjectToAStringHere)
.Select(item => new XElement("unit", item)))));
doc.Save(@"Settings.xml");
}