我有一个具有以下结构的XML节点:
<package>package <name>com</name>.<name>sample</name>.<name>app1</name>;</package>
name 标记可以随机出现多次,我想要的是获取元素列表中第一个和最后一个子节点之间所有子节点的值,以获得像这样的值: com.sample.app1 。
我想我可以将某种类型的正则表达式应用于包节点的值,该节点始终以“package”开头并以“;”结尾。或者可能是某些LINQ
或lambda
表达式?
由于我正在处理大型XML文件并且此节点是其中的一部分,因此最有效的方法是什么?
答案 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
}}。)