簡體   English   中英

如何從相同的名稱xml C#獲取所有值

[英]How to get all the values from the same Name xml c#

我的目的是制作一個程序,該程序創建一個新文件目標,該目標從另一個文件獲取一些值。 XML文件:

 <?xml version="1.0"?>
  <house>
  <chairs count="3">
  <chairs>a</chairs>
  <chairs>b</chairs>
  <chairs>c</chairs>
  </chairs>
 </house>

我所做的:

 static void Main(string[] args)
    {
       using (XmlReader reader = XmlReader.Create("file.xml"))
        {
            while (reader.Read())
            {
                if (reader.IsStartElement())
                {
                    switch (reader.Name)
                    {

                        case "chairs":

                            if (reader.Read())
                            {
                                string l;
                                l = reader.Value.Trim();
                                //(*)
                            }
                            break;
                    }
                }
            }
        }

  // (**)f = l + " ";

如果我在*行上寫:

 Console.WriteLine(l), it will print me:

 a
 b
 c 

但是,如果刪除(*)並取消注釋(**),則在新創建的文件中僅顯示c,因為我認為由於串聯它會覆蓋a和b。 可以取所有值a,b,c並寫入文件,而不僅僅是最后一個值?

有很多方法可以做到這一點。

但是使用XML的最方便的方法之一(當您事先了解架構時)是使用XSD.exe並為架構生成類,然后將XML 反序列化為類並與C#類一起使用。

嘗試這個:

static void Main(string[] args)
{
   List<string> strings = new List<string>();
   using (XmlReader reader = XmlReader.Create("file.xml"))
    {
        while (reader.Read())
        {
            if (reader.IsStartElement())
            {
                switch (reader.Name)
                {

                    case "chairs":

                        if (reader.Read())
                        {
                            strings.Add(reader.Value.Trim());
                        }
                        break;
                }
            }
        }
    }

這樣,列表strings將具有所有節點,並且可以用作集合。 如果需要,可以串聯,但是初始代碼中的賦值建議您每次都只是覆蓋該值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM