C# 无法使用Linq查询删除XmlElement
我有一个非常基本的linq查询,可以从xml文件中删除一个节点C# 无法使用Linq查询删除XmlElement,c#,linq,linq-to-xml,C#,Linq,Linq To Xml,我有一个非常基本的linq查询,可以从xml文件中删除一个节点 Sequence contains no elements 然后我用FirstOrDefault()代替First()(正如前面的文章所提到的),这次执行消息变成了 Object reference not set to an instance of an object. 这是我的密码 protected void Page_Load(object sender, EventArgs e) { XDo
Sequence contains no elements
然后我用FirstOrDefault()代替First()(正如前面的文章所提到的),这次执行消息变成了
Object reference not set to an instance of an object.
这是我的密码
protected void Page_Load(object sender, EventArgs e)
{
XDocument doc = XDocument.Load(Server.MapPath("Kitaplar.xml"));
var toDelete = (from data in doc.Elements("Kitap") where data.Attribute("id").Value == "1" select data).FirstOrDefault();
toDelete.Remove();
doc.Save(Server.MapPath("Kitaplar.xml"));
}
这是XML文件
<?xml version="1.0" encoding="utf-8"?>
<Kitaplar>
<Kitap id="1">
<Kitapadi>asasa</Kitapadi>
<Yazar>sasas</Yazar>
<Sayfa>22</Sayfa>
</Kitap>
<Kitap id="2">
<Kitapadi>jhjh</Kitapadi>
<Yazar>kjkj</Yazar>
<Sayfa>33</Sayfa>
</Kitap>
<Kitap id="3">
<Kitapadi>lkjhg</Kitapadi>
<Yazar>gffd</Yazar>
<Sayfa>988</Sayfa>
</Kitap>
<Kitap id="4">
<Kitapadi>lkjhg</Kitapadi>
<Yazar>gffd</Yazar>
<Sayfa>988</Sayfa>
</Kitap>
</Kitaplar>
阿萨萨
萨萨斯
22
jhjh
kjkj
33
lkjhg
gffd
988
lkjhg
gffd
988
在我看来一切正常。我做错了什么?我冒昧地编写了一个方法,该方法使用文件、元素和ID;然后相应地删除元素
private bool DeleteRowWithID(string fileName, string element, string id)
{
XDocument doc = XDocument.Load(fileName);
if (doc.Root == null)
return false;
XElement toRemove = doc.Root.Elements(element).Where(e => e.Attribute("id").Value == id).FirstOrDefault();
if (toRemove == null)
return false;
toRemove.Remove();
doc.Save(fileName);
return true;
}
上述方法将XmlDocument加载到XDocument中(这允许LINQ转换为XML)。它检查根是否为空,然后查找指定的元素
它检查元素是否存在;然后从文档中删除该元素,并保存删除的内容
最后,它返回true以指示元素实际上已被删除
如果只需要元素并坚持使用方法,请使用以下方法:
XElement toRemove = doc.Root.Elements("Kitap").Where(e => e.Attribute("id").Value == "1").FirstOrDefault();
通过程序进行调试。
doc
是否用实际文件填充?使用doc.Root.Elements(…中的数据中的。doc
变量指向文档表示,它的第一个元素是Kitaplar
节点(根元素)。你说得对。它是这样工作的。@Matthijs感谢你的帮助