Зациклить файл XML и добавить в список c # - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть этот 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>, которые представляют собой список из нескольких элементов, таких как имя, логин и пароль.Могу ли я выполнить цикл <PasswordSettings> в цикле foreach <PasswordSettings> и получить элементы?

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Попробуйте 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:\temp\test.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();

        }
    }
}
0 голосов
/ 10 апреля 2019

Пожалуйста, попробуйте с этим примером:
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);
                    }
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...