我正在使用C#。
我从外部客户端获得了一个带有子节点的xml节点,如下所示:
<PriceID>32</PriceID>
<Store_1> 344</Store_1>
<Store_32> 343 </Store_32>
<SS> 54</SS>
我想选择以商店&amp;开头的所有节点的 SS
我有办法吗?
我知道有一种方法可以选择以Store开头的节点:
list = el.SelectNodes(@"node()[starts-with(name(), 'Store')]");
我想选择以“Store”开头的所有节点&amp; “SS”。
请告诉我。
答案 0 :(得分:1)
如果您可以使用LINQ to 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"));