我有一个像这样的xml结构: -
<Person id="1" Name="Rahul lamba" Manager_Id="13" Department="IT" />
<Person id="6" Name="Saurabh" Manager_Id="4" Department="IT" />
<Person id="5" Name="Amitesh" Manager_Id="6" Department="IT" />
现在我想从每行删除XML中的 Manager_Id 节点。
我尝试了这个,但没有任何效果
XmlNodeList l = doc.GetElementsByTagName("Person");
foreach (XmlNode item in l)
{
foreach (var item1 in item.ChildNodes)
{
if (item1 == "Manager_Id")
{
//Code to remove Manager_Id node.
}
}
}
我怎样才能实现这个目标?
提前完成。
答案 0 :(得分:3)
您可以使用Linq To Xml轻松完成,
var xDoc = XDocument.Parse(xmlstring); //XDocument.Load(filename)
xDoc.Descendants("Person")
.Select(x => x.Attribute("Manager_Id"))
.Where(x => x!=null)
.ToList().ForEach(a => a.Remove());
var newxml = xDoc.ToString(); //xDoc.Save(fileName);
答案 1 :(得分:0)
XmlTextReader reader = new XmlTextReader(@"C:\MyXml.xml");
reader.Read();
XmlDocument doc = new XmlDocument();
doc.Load(reader);
XmlNode node = doc.SelectSingleNode("/Persons/Person[@Manager_Id=6]");
node.ParentNode.RemoveChild(node);
reader.Close();
doc.Save(@"D:\MyXml.xml");
删除所有带att的节点
XmlTextReader reader = new XmlTextReader(@"C:\MyXml.xml");
reader.Read();
XmlDocument doc = new XmlDocument();
doc.Load(reader);
XmlNodeList lstNode = doc.SelectNodes("/Persons/Person[@Manager_Id]");
foreach (XmlNode node in lstNode)
{
node.ParentNode.RemoveChild(node);
}
reader.Close();
doc.Save(@"C:\MyXml.xml");