删除 xml 节点 -Xelement
Remove xml node -Xelement
我有一个 xml 文件,只需要从中删除特定节点。节点名称将作为用户的输入给出。如何删除用户请求的特定节点?
<Customers>
<Customer>
<id>michle</id>
<address>newjersy</address>
</Customer>
<Customer>
<id>ann</id>
<address>canada</address>
</Customer>
</Customers>
我试过了
var customer = new XElement("customer",
from o in customers
select
new XElement("id", id),
new XElement("address", address)
);
客户将包含一个新节点
<Customer>
<id>ann</id>
<address>canada</address>
</Customer>
doc.Element("customers").Elements(customer).ToList().Remove();
但这不起作用。如何从 xml?
中删除元素
您的主要错误是您正在创建未附加到源文档的新节点,而不是从中检索现有节点。
您可以使用 MSDN 上的文章 "Removing Elements, Attributes, and Nodes from an XML Tree" 作为操作 XML 数据的指南。
例如,使用XNode.Remove()
method to delete one node from the tree or Extensions.Remove<T>(this IEnumerable<T> source) where T : XNode
删除源节点集合中的每个节点:
doc.Descendants("Customer")
.Where(x => x.Element("id").Value == id)
.Remove();
但是您还需要通过 Save
方法保存文档以提交您的更改:
doc.Save();
汤姆,
试试这个...
private static void RemoveNode(string sID)
{
XDocument doc = XDocument.Load(@"D:\Projects\RemoveNode.xml");
var v = from n in doc.Descendants("Customer")
where n.Element("id").Value == sID
select n;
v.Remove();
doc.Save(@"D:\Projects\RemoveNode.xml");
}
当我使用
调用它时,这删除了一个节点
RemoveNode("michle");
希望这对您有所帮助。
你可以根据id
这样删除
xdoc.Descendants("Customer")
.Where(x => (string)x.Element("id") == "michle")
.Remove();
我有一个 xml 文件,只需要从中删除特定节点。节点名称将作为用户的输入给出。如何删除用户请求的特定节点?
<Customers>
<Customer>
<id>michle</id>
<address>newjersy</address>
</Customer>
<Customer>
<id>ann</id>
<address>canada</address>
</Customer>
</Customers>
我试过了
var customer = new XElement("customer",
from o in customers
select
new XElement("id", id),
new XElement("address", address)
);
客户将包含一个新节点
<Customer>
<id>ann</id>
<address>canada</address>
</Customer>
doc.Element("customers").Elements(customer).ToList().Remove();
但这不起作用。如何从 xml?
中删除元素您的主要错误是您正在创建未附加到源文档的新节点,而不是从中检索现有节点。
您可以使用 MSDN 上的文章 "Removing Elements, Attributes, and Nodes from an XML Tree" 作为操作 XML 数据的指南。
例如,使用XNode.Remove()
method to delete one node from the tree or Extensions.Remove<T>(this IEnumerable<T> source) where T : XNode
删除源节点集合中的每个节点:
doc.Descendants("Customer")
.Where(x => x.Element("id").Value == id)
.Remove();
但是您还需要通过 Save
方法保存文档以提交您的更改:
doc.Save();
汤姆,
试试这个...
private static void RemoveNode(string sID)
{
XDocument doc = XDocument.Load(@"D:\Projects\RemoveNode.xml");
var v = from n in doc.Descendants("Customer")
where n.Element("id").Value == sID
select n;
v.Remove();
doc.Save(@"D:\Projects\RemoveNode.xml");
}
当我使用
调用它时,这删除了一个节点RemoveNode("michle");
希望这对您有所帮助。
你可以根据id
xdoc.Descendants("Customer")
.Where(x => (string)x.Element("id") == "michle")
.Remove();