Вывести XML-файл в список - PullRequest
1 голос
/ 08 июня 2011

Я хочу прочитать XML-файл и загрузить содержимое в виде списка.

Сначала XML-файл:

<?xml version="1.0"?>

<Budget_Table>

    <budgets>

        <Einnahmen>10€</Einnahmen>
        <Anmerkung_Einnahme>Win</Anmerkung_Einnahme>    
        <Ausgaben>6€</Ausgaben>
        <Anmerkung_Ausgabe>Pizza</Anmerkung_Ausgabe>
        <Datum>12.03.2011</Datum>
    </budgets>

    <budgets>
        <Einnahmen></Einnahmen>
        <Anmerkung_Einnahme></Anmerkung_Einnahme>   
        <Ausgaben>6€</Ausgaben>
        <Anmerkung_Ausgabe>Pizza</Anmerkung_Ausgabe>
        <Datum>20.03.2011</Datum>
    </budgets>

</Budget_Table>

Хорошо, это XML-файл. В строках есть контент. Приложение должно быть чем-то вроде Бюджетной книги.

Теперь Listview и вся проблема ... Я не знаю, как мне реализовать Кодекс. Должен ли я использовать набор данных, Datatables, Linq? Что хорошего?

В конце я wand, чтобы редактировать данные, удалить и добавить. Поэтому я тоже должен написать в xml.

Я могу сделать:

DataSet dataset= new DataSet();
dataset.ReadXml("budget.xml");

Но тогда как я могу читать теги? ... и все это столбцы в ListView. Как я могу использовать их правильно?

Надеюсь, вы поможете мне.

Ответы [ 2 ]

0 голосов
/ 08 июня 2011

вы можете выбрать то, что вы хотите, используя метод select из вашего набора данных, например

dataset.Tables["budgets"].Select("where Anmerkung_Einnahme=Win");

, или вы можете использовать XPath для запроса вашего XML-файла, загрузив его в XmlDocument Object

XmlDocument doc = new XmlDocument();
doc.Load("FullPath");
XmlNode = doc.SelectNodes(@"/Budget_Table/budgets[Anmerkung_Einnahme=Win]");

эти два примера вернут все узлы budegts с Anmerkung_Einnahme = Win;

, чтобы обновить ваш xml, вы можете установить свойства любого выбранного узла и затем сохранить XmlDocument в файл

 doc.Save("FullPath");
0 голосов
/ 08 июня 2011

Создайте модель (класс) для бюджета:

public class Budget{
 public string Einnahmen {get; set;}
 public string AnmerkungEinnahme {get; set;}
 public string Ausgaben {get; set;}
 public string AnmerkungAusgabe {get; set;}
 public DateTime Datum {get; set;}
}

Затем используйте Linq, чтобы заполнить коллекцию статей бюджета:

public static List<Budget> GetBudgets()
{
    XDocument data = XDocument.Load(HttpContext.Current.Server.MapPath("~/Data/Budgets.xml"));

    return (from b in data.Descendants("Budget")
            orderby b.Attribute("Datum")
            select new Budget()
            {
                Einnahmen = b.Element("Einnahmen").Value,
                AnmerkungEinnahme= b.Element("Anmerkung_Einnahme").Value,
                Ausgaben = b.Element("Ausgaben").Value,
                AnmerkungAusgabe= b.Element("Anmerkung_Ausgabe").Value,
                Datum = b.Element("Datum").Value

            }).ToList();
}

Теперь вы можете привязать свой список кэтот объект и используйте конструкцию <%# Eval("Einnahmen")%> для вывода правильных данных.

Надеюсь, это поможет!Крис.

...