从XML Fragment获取特定内容

时间:2013-08-15 02:09:06

标签: c# xml linq-to-xml

文本文件包含

等属性
    <file loc="NEEDTHIS" id="140359"/>
    <file loc="NEEDTHIS2" id="137406"/>
    <file loc="NEEDTHIS3" id="137545"/>

如何获取文件位置并将其存储在字符串数组中?

预期产出:

    NEEDTHIS
    NEEDTHIS2
    NEEDTHIS3

2 个答案:

答案 0 :(得分:1)

将文件加载到XDocument对象中,然后使用LINQ从每个loc元素中提取file属性,如下所示:

var doc = new XDocument();
doc.Load("path to your XML file");

var files = from file in doc.Descendants("file")
            select (string)service.Element("loc");

答案 1 :(得分:1)

XDocument可以做到:

var paths = XDocument.Load("file.xml")
                     .Descendants("file")
                     .Select(n => n.Attribute("loc").Value);
Console.WriteLine(string.Join(", ", paths));

分解为foreach循环:

var doc = XDocument.Load("file.xml");
var paths = new List<string>();
foreach (var file in doc.Descendants("file"))
    paths.Add(file.Attribute("loc").Value); // or just Console.WriteLine(file.Attribute("loc").Value);
Console.WriteLine(string.Join(", ", paths));