如何获取C#中元素的第一个和最后一个子节点内所有节点的值

时间:2013-02-19 21:35:12

标签: c# regex linq xml-parsing

我有一个具有以下结构的XML节点:

<package>package <name>com</name>.<name>sample</name>.<name>app1</name>;</package>

name 标记可以随机出现多次,我想要的是获取元素列表中第一个和最后一个子节点之间所有子节点的值,以获得像这样的值: com.sample.app1

我想我可以将某种类型的正则表达式应用于节点的值,该节点始终以“package”开头并以“;”结尾。或者可能是某些LINQlambda表达式?

由于我正在处理大型XML文件并且此节点是其中的一部分,因此最有效的方法是什么?

1 个答案:

答案 0 :(得分:3)

在这种情况下,我只是使用:

var package = string.Join(".", element.Elements("name").Select(x => x.Value));

(其中element是代表XElement的{​​{1}}。)

或者,如果有不同的命名空间:

<package>

(其中XNamespace ns = "http://some.namespace/here"; var package = string.Join(".", element.Elements(ns + "name") .Select(x => x.Value)); 是代表element的{​​{1}},而XElement<package>ns + "name"组合在一起string }}。)