当我不知道路径是什么时,如何根据属性值删除VB.Net中的XML节点?

时间:2016-06-17 16:43:50

标签: c# .net xml vb.net

我一直在使用VB.Net中的LINQ以及其他一些尝试根据属性值删除XML节点的事情。基本上,如果我的XML文档中的任何节点具有特定值的属性,例如“cats”,我想删除它。

问题是我不会确切地知道XML结构的样子,所以我不能给出路径。另外,我知道一些可能包含“猫”的属性,但我不想在可能的情况下对它们进行硬编码。

所以,换句话说,我没有设置XML结构,我想删除任何有“猫”作为属性值的节点,比如Caption =“cats”或Title =“cats”,任何地方在节点中。如果它有“猫”,那就去核。

这一切都可能吗?或者我只是需要放弃这个项目?

顺便说一句,我正在尝试用VB.Net编写解决方案,但如果有人碰巧知道如何实现这一点但我只能提供C#代码,那么我完全有能力阅读和转换C#。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用以下方式执行此操作:

在c#中,这变为:

var doc = XDocument.Parse(xmlString);
var attributeValue = "cats";
doc.Descendants().Where(e => e.Attributes().Any(a => (string)a == attributeValue)).Remove();

在VB.NET中:

Dim doc = XDocument.Parse(xmlString)
Dim attributeValue = "cats"
doc.Descendants().Where(Function(e) e.Attributes().Any(Function(a) CStr(a) = attributeValue)).Remove()

示例fiddle