簡體   English   中英

閱讀和遍歷C#中的xml元素

[英]Reading and iterating through xml elements in C#

我剛剛開始使用C#語言,正在尋找一種方法來遍歷xml文件中的元素和子元素。

我的xml看起來像這樣-

  <ServerList>
     <server name = "serverName1" username ="username" password ="password">
      <serviceName>serviceName</serviceName>
      <serviceName>serviceName</serviceName>
      <serviceName>serviceName</serviceName>
   </server>
<server name = "serverName2" username ="username" password = "password">
       <serviceName>serviceName</serviceName>
       <serviceName>serviceName</serviceName>
  </server>
<ServerList>

我只是在尋找一種方法,讓我可以遍歷第一個服務器元素及其子元素,而不是下一個服務器元素及其子元素。

您可以使用LINQ to XML作為一種簡單的方法:

XDocument xdoc = XDocument.Load("myXmlFile.xml");

var servers = xdoc.Descendants("server"); 
for (var server in servers) 
{
    var children = server.Elements(); 
    for (var child in children)
    {
        // Do what you want with the server and child here
    }
}

如果需要更多信息,則可能需要考慮使用XML反序列化。 這將允許您定義映射到XML模式中的節點的類,將XML反序列化為強類型對象的圖,然后可以對其進行迭代,過濾,轉換等。如果您決定采用這種方法,建議您使用YAXLib ,因為BCL XML序列化程序有點爛。

后代很好,這還是一種遞歸方法

class Program
{
    static void Main(string[] args)
    {
        XElement x = XElement.Load("XMLFile1.xml");
        recursive(x.Elements());
        Console.ReadKey();
    }

    private static void recursive(IEnumerable<XElement> elements)
    {
        foreach (XElement n in elements)
        {
            Console.WriteLine(n.Name);
            Console.WriteLine("--");
            if (n.Descendants().Any())
            {
                recursive(n.Elements());
            }
            else
            {
             Console.WriteLine(n.Value.ToString());// End of node (leaf)
            }
        }
    }

}

暫無
暫無

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

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