我创建了一个treeview xml程序,允许您管理树xml。我需要一个程序功能,它将按名称和路径删除项目。
例如:
<Main>
<Set>
<MId>1</MId>
<RName>
<MetaData>
<PrdctName>
Test 1
</PrdctName>
</MetaData>
</RName>
</Set>
<Set/>
<Set/>
<Set>
<MId>2</MId>
<RName>
<MetaData>
<PrdctName>
Test 1
</PrdctName>
</MetaData>
</RName>
</Set>
</Main>
我想删除&#34; PrdctName&#34;在所有xml文件中按名称和相同的路径。有人可以帮帮我吗?
编辑:我尝试类似的东西,但这不起作用:
void deletebytag(TreeNodeCollection nodes)
{
List<TreeNode> nodee = new List<TreeNode>();
foreach (TreeNode node in nodes)
{
if (node.Name == "au_id")
{
nodee.Add(node);
}
else
{
deletebytag(node.Nodes);
}
}
foreach (TreeNode node in nodee)
{
nodes.Remove(node);
}
}
答案 0 :(得分:-1)
与所有列表集合对象一样,您需要从最后一项删除到第一项,因此索引不会搞砸。我在下面使用了xml Liinq
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication16
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
List<XElement> prdctNames = doc.Descendants("PrdctName").ToList();
for (int i = prdctNames.Count - 1; i >= 0; i--)
{
prdctNames[i].Remove();
}
}
}
}