循环 XML 文件并添加到列表 c#



>我有这个XML文件:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfPasswordSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <PasswordSettings>
        <CustomerRef>c</CustomerRef>
        <Node>n</Node>
        <Name>na</Name>
        <Login>l</Login>
        <Password>ITra+Map1RxklmcSY5yOo9wU9tUV0S4C4qwUv4p2ZFS3L8ByJYXmA9YjswlSTjQZXUJAkV3Z6mhY8OF5/dFOLNAZZRk2i2IOzrVOWSDfdpB8/Vm7PPF0ucSHILHNWpT8</Password>
        <FileType>ft</FileType>
    </PasswordSettings>
    <PasswordSettings>
        <CustomerRef>c</CustomerRef>
        <Node>n</Node>
        <Name>na</Name>
        <Login>l</Login>
        <Password>ITra+Map1RxklmcSY5yOo9wU9tUV0S4C4qwUv4p2ZFS3L8ByJYXmA9YjswlSTjQZXUJAkV3Z6mhY8OF5/dFOLNAZZRk2i2IOzrVOWSDfdpB8/Vm7PPF0ucSHILHNWpT8</Password>
        <FileType>ft</FileType>
    </PasswordSettings>
</ArrayOfPasswordSettings>

如您所见,有多个<PasswordSettings>是多个项目的列表,如名称,登录名和密码。我可以在某个 foreach <PasswordSettings> 循环中迭代<PasswordSettings>并获取元素吗?

请尝试使用此示例:
.XML:

 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<root>
    <Brand name="Brand1">
        <product name="Product1" />
        <product name="Product2" />
    </Brand>
    <Brand name="Brand2">
        <product name="Product3" />
        <product name="Product4" />
    </Brand>
</root>

C#:

                StringBuilder result = new StringBuilder();
                foreach (XElement level1Element in XElement.Load(@"D:product.xml").Elements("Brand"))
                {
                    result.AppendLine(level1Element.Attribute("name").Value);
                    foreach (XElement level2Element in level1Element.Elements("product"))
                    {
                        result.AppendLine("  " + level2Element.Attribute("name").Value);
                    }
                }

试试 xml linq :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication108
{
    class Program
    {
        const string FILENAME = @"c:temptest.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);
            var results = doc.Descendants("PasswordSettings").Select(x => new
            {
                c = (string)x.Element("CustomerRef"),
                node = (string)x.Element("Node"),
                name = (string)x.Element("Name"),
                login = (string)x.Element("Login"),
                password = (string)x.Element("Password"),
                fileType = (string)x.Element("FileType")
            }).ToList();
        }
    }
}

最新更新