C# - 将列表框内容导出为XML

时间:2011-09-01 15:11:24

标签: c# asp.net xml export-to-xml

我有一个列表框控件,其中包含由“=”符号分隔的键值对。

示例:

热=冷

快速=慢

=高低

蓝色=红色

我还有一个允许用户以XML格式导出此列表的按钮。我怎么能轻易做到这一点?

如何处理XML文件应采用的格式?

4 个答案:

答案 0 :(得分:2)

您可以使用LINQ:

var xml = new XElement("Items",
    from s in strings 
    let parts = s.Split('=')
    select new XElement("Item", 
        new XAttribute("Key", parts[0]), 
        parts[1]
    )
);

答案 1 :(得分:1)

您可以使用LINQ将项目导出到XML,如下所示:

<asp:ListBox ID="listBox" runat="server">
    <asp:ListItem Text="Joe" Value="1" />
    <asp:ListItem Text="Jay" value="2" />
    <asp:ListItem Text="Jim" Value="3" Selected="true" />
    <asp:ListItem Text="Jen" Value="4" />
</asp:ListBox>

编辑:用使用LINQ to XML的方法替换旧方法。

public XDocument ParseListBoxToXml()
{
    //build an xml document from the data in the listbox
    XDocument lstDoc = new XDocument(
        new XElement("listBox",
            new XAttribute("selectedValue", listBox.SelectedValue ?? String.Empty), new XAttribute("selectedIndex", listBox.SelectedIndex), new XAttribute("itemCount", listBox.Items.Count),
            new XElement("items",
                from ListItem item in listBox.Items
                select new XElement("item", new XAttribute("text", item.Text), new XAttribute("value", item.Value), new XAttribute("selected", item.Selected))
                )
            )
        );

    //return the xml document
    return lstDoc;
}

以下是上述方法的XML输出:

<listBox selectedValue="3" selectedIndex="2" itemCount="4">    
    <items>
        <item Text="Joe" Value="1" Selected="false" />
        <item Text="Jay" Value="2" Selected="false" />
        <item Text="Jim" Value="3" Selected="true" />
        <item Text="Jen" Value="4" Selected="false" />
    </items>
</listBox>

答案 2 :(得分:0)

查看有关如何编写XML文件的THIS教程 或者按照SLaks的建议使用XElement并使用其Save()方法获取Xml-File / -Data。您也可以使用该方法将其直接写入响应流。

答案 3 :(得分:0)

这是另一种选择。

XmlWriterSettings settings = new XmlWriterSettings();

settings.Indent = true;

settings.IndentChars = ("    ");

string fileName = @"C:\Temp\myXmlfile.xml";
using (XmlWriter writer = XmlWriter.Create(fileName, settings))
{              
    writer.WriteStartElement("items");

    for (int i = 0; i < listBox1.Items.Count; i++)
    {
        writer.WriteStartElement("item");
        string Key = listBox1.Items[i].ToString().Split('=')[0];
        string Value = listBox1.Items[i].ToString().Split('=')[1];

        writer.WriteElementString("key", Key);
        writer.WriteElementString("value", Value);
        writer.WriteEndElement();

    }
    writer.WriteEndElement();
    writer.Flush();
}