C # - экспорт содержимого списка в XML - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть элемент управления списком, который содержит пары значений ключа, разделенные знаком "*".

Пример:

hot = cold

fast = slow

high = low

blue = red

У меня также есть кнопка, которая позволит пользователю экспортировать этот список в XML.Как я могу легко это сделать?

Как мне создать файл XML, в каком формате он должен быть?

Ответы [ 4 ]

2 голосов
/ 01 сентября 2011

Вы можете использовать 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 голос
/ 01 сентября 2011

Вы можете экспортировать элементы в XML с помощью LINQ, например:

<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>

EDIT : заменен старый метод на метод, который использует 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>
0 голосов
/ 01 сентября 2011

Вот еще одна альтернатива.

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();
}
0 голосов
/ 01 сентября 2011

Взгляните на ЭТУ учебник о том, как писать файлы XML.
Или используйте XElement, как предложено SLaks, и используйте его метод Save (), чтобы получить Xml-File / -Data. Вы также можете записать его непосредственно в поток ответов, используя этот метод.

...