首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将XML转换为List<string>或String[]?

如何将XML转换为List<string>或String[]?
EN

Stack Overflow用户
提问于 2009-06-05 16:10:28
回答 8查看 60.9K关注 0票数 16

如何将以下XML转换为List<string>String[]

代码语言:javascript
复制
<Ids>
  <id>1</id>
  <id>2</id>
</Ids>
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-06-05 16:15:24

听起来您更倾向于解析而不是完整的XML序列化/反序列化。如果您可以使用LINQ to XML,这将非常简单:

代码语言:javascript
复制
using System;
using System.Linq;
using System.Xml.Linq;

public class Test
{
    static void Main()
    {
        string xml = "<Ids><id>1</id><id>2</id></Ids>";

        XDocument doc = XDocument.Parse(xml);

        var list = doc.Root.Elements("id")
                           .Select(element => element.Value)
                           .ToList();

        foreach (string value in list)
        {
            Console.WriteLine(value);
        }
    }
}

实际上,由于只有id元素,所以对Elements的调用可以省略该参数,但我认为我应该演示如何指定您需要的元素。

同样,我通常不会调用ToList,除非我真的需要一个List<string> -如果没有它,结果是IEnumerable<string>,如果你只迭代它一次就可以了。要创建数组,请使用ToArray

票数 46
EN

Stack Overflow用户

发布于 2009-06-05 16:33:51

下面是一种使用XmlDocument的方法:

代码语言:javascript
复制
// A string containing the XML data
string xml = "<Ids><id>1</id><id>2</id></Ids>";
// The list you want to fill
ArrayList list = new ArrayList();

XmlDocument doc = new XmlDocument();
// Loading from a XML string (use Load() for file)
doc.LoadXml(xml); 
// Selecting node using XPath syntax
XmlNodeList idNodes = doc.SelectNodes("Ids/id");
// Filling the list
foreach (XmlNode node in idNodes)
    list.Add(node.InnerText);
票数 18
EN

Stack Overflow用户

发布于 2011-02-11 22:51:13

任何类型的集合。例如:

<Ids> <id>C:\videotest\file0.txt</id> <id>C:\videotest\file1.txt</id> </Ids>

代码语言:javascript
复制
class FileFormat
    {
        public FileFormat(string path)
        {
            this.path = path;
        }
        public string FullPath
        {
            get { return Path.GetFullPath(path); }
        }
        public string FileName
        {
            get { return Path.GetFileName(path); }
        }
        private string path;
    }

List<FileFormat> Files =
        selectedNode
        .Descendants("Ids")
        .Elements("Id")
        .Select(x => new FileFormat(x.Value))
        .Where(s => s.FileName!=string.Empty)
        .ToList();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/956749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档