选择所有以字符串或其他字符串开头的XML子节点
本文关键字:字符串 开头 XML 子节点 其他 选择 | 更新日期: 2023-09-27 18:08:15
我用的是c#。
我从客户端得到了一个xml节点,子节点如下:
<PriceID>32</PriceID>
<Store_1> 344</Store_1>
<Store_32> 343 </Store_32>
<SS> 54</SS>
我想选择所有以Store &党卫军
有办法吗?
我知道有一种方法可以选择以Store开头的节点:
list = el.SelectNodes(@"node()[starts-with(name(), 'Store')]");
我想选择所有以"Store" &"党卫军"。
请告诉我。
如果您可以使用LINQ到XML,这很简单:
var results = doc.Descendants()
.Where(x => x.Name.LocalName.StartsWith("Store") ||
x.Name.LocalName.StartsWith("SS"));
XmlDocument
更难,因为没有Descendants()
或DescendantsAndSelf
的直接等价物。您可以编写自己的扩展方法:
// I'm assuming we don't mind too much about the ordering...
public static IEnumerable<XmlElement> DescendantsAndSelf(this XmlElement node)
{
return new[] { node }.Concat(node.ChildNodes
.OfType<XmlElement>()
.SelectMany(x => x.DescendantsAndSelf()));
}
那么你可以使用:
var results = doc.DocumentElement.DescendantsAndSelf()
.Where(x => x.LocalName.StartsWith("Store") ||
x.LocalName.StartsWith("SS"));