在我投票之前,我已经看过很多与这个话题相关的帖子。我试过了
public int deleteMsg(string senderID)
{
XDocument xmlDocMsgs = XDocument.Load(XMLLocale);
XNamespace nameSpace = "http://example.com/Messages";
XElement queryElementItems =
xmlDocMsgs.Descendants(nameSpace+"Message").Where(a => a.Element(nameSpace+"senderID").Value == senderID).FirstOrDefault();
queryElementItems.Remove();
xmlDocMsgs.Save(XMLLocale);
}
//still need to figure out count of how many messages deleted
和Linq
public int deleteMsg(string senderID)
{
int count = 0;
XDocument xmlDocMsgs = XDocument.Load(XMLLocale);
XNamespace nameSpace = "http://example.com/Messages";
IEnumerable<XElement> queryElementItems =
from item in xmlDocMsgs.Root.Descendants(nameSpace + "Message")
where item.Element(nameSpace + "senderID").Value == senderID
orderby (DateTime)item.Element(nameSpace + "TS") descending
select item;
foreach(XElement item in queryElementItems)
{
item.Remove();
count++;
}
return count;
}
我的XML表
<Messages xmlns="http://example.com/Messages">
<Message>
<SenderID>test</SenderID>
<ReceiverID>test</ReceiverID>
<TS>3/11/2018 6:36:33 PM</TS>
<MessageContents>test</MessageContents>
</Message>
</Messages>
我正在尝试在visual studio中创建一个简单的消息服务。 我理解如何将数据添加到xml文件中,但我想删除特定senderID中的所有消息。因此,如果senderID.value与参数相同,我想删除消息节点和所有子节点。我在一些帖子中读到,你不能只删除它们必须在列表中的元素。所以我也尝试了实施
var nodesToBeDeleted = queryElementItems.ToList();
然后尝试做我的foreach。每次我测试我的服务时,我都会收到400错误。我对如何实现此方法的想法不足。