如何将以下XML转换为List<string>
或String[]
<Ids>
<id>1</id>
<id>2</id>
</Ids>
发布于 2009-06-05 16:15:24
听起来您更倾向于解析而不是完整的XML序列化/反序列化。如果您可以使用LINQ to XML,这将非常简单:
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
。
发布于 2009-06-05 16:33:51
下面是一种使用XmlDocument的方法:
// 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);
发布于 2011-02-11 22:51:13
任何类型的集合。例如:
<Ids>
<id>C:\videotest\file0.txt</id>
<id>C:\videotest\file1.txt</id>
</Ids>
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();
https://stackoverflow.com/questions/956749
复制相似问题