【问题标题】:Output the XML-File into a Listview将 XML 文件输出到 Listview
【发布时间】:2011-06-08 12:43:08
【问题描述】:

我想读取 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 文件。 在行中是内容。 该应用程序应该类似于预算书。

现在列表视图和整个问题... 我不知道我应该如何实现代码。 我应该使用数据集、数据表、Linq 吗? 有什么好?

最后我想编辑数据,删除和添加。 所以我也必须写入 xml。

我能做到:

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

但是我怎样才能阅读标签呢? , ... 所有这些都是 Listview 中的列。 如何正确使用它们?

希望你能给我一些帮助。

【问题讨论】:

    标签: c# xml listview writing


    【解决方案1】:

    为预算创建一个模型(类):

    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();
    }
    

    您现在可以将您的列表视图绑定到该对象并使用&lt;%# Eval("Einnahmen")%&gt; 构造来输出正确的数据。

    希望这会有所帮助! 克里斯。

    【讨论】:

      【解决方案2】:

      你可以从你的数据集中选择你想使用的select方法,比如

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

      或者您可以使用 XPath 通过将 XML 文件加载到 XmlDocument 对象中来查询它

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

      这两个示例将返回所有带有 Anmerkung_Einnahme=Win 的预算节点;

      要更新您的 xml,您可以设置您选择的任何节点的属性,然后将 XmlDocument 保存到文件中

       doc.Save("FullPath");
      

      【讨论】:

        猜你喜欢
        • 2011-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多