本文介绍了我想检查XML中的重复元素,并在标签上为重复元素提供警报的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
XML: -
<?xml version =1.0encoding =utf-8?> < List> < Email_Entry>< / Email_Entry> < Email_Entry EmailID =qw@gmail/> < Email_Entry EmailID =qw@gmail/> < Email_Entry EmailID =qw@gmail/> < Email_Entry EmailID =qw@gmail/> < Email_Entry EmailID =shssh@gmail/> < / List>我尝试过:
aspx.cs: - < pre> protected void btnEmailSubscribe_Click(object sender,EventArgs e) { string EmailID = txtEmailSubscribe.Text; string FILE_PATH = Server.MapPath(〜/ Logs / SubscribedEmails.xml); XDocument Emailxml = XDocument.Load(FILE_PATH); var EmailExist = Emailxml.Descendants(Email_Entry) .Any(x =>(string)x.Element(EmailID)== txtEmailSubscribe.Text); if(EmailExist) { lblEmail.Text =EmailID已存在; } 其他 { Emailxml.Root.Add(新XElement(Email_Entry,新XAttribute(EmailID,EmailID)) ); Emailxml.Save(FILE_PATH); lblEmail.Text =订阅成功; } }任何人都可以说错了吗?
解决方案这将只返回重复的电子邮件地址。 var duplicateEmails = Emailxml.Descendants( Email_Entry) // 电子邮件节点 .GroupBy(x = > x.Name) // 逐个元素 .Where(x = > x.Count()> 1 ) // 选择超过1的组 。选择(x = > x.Key.LocalName) // 元素内容 .ToList();
XML:-
<?xml version="1.0" encoding="utf-8"?> <List> <Email_Entry></Email_Entry> <Email_Entry EmailID="qw@gmail" /> <Email_Entry EmailID="qw@gmail" /> <Email_Entry EmailID="qw@gmail" /> <Email_Entry EmailID="qw@gmail" /> <Email_Entry EmailID="shssh@gmail" /> </List>What I have tried:
aspx.cs:- <pre>protected void btnEmailSubscribe_Click(object sender, EventArgs e) { string EmailID = txtEmailSubscribe.Text; string FILE_PATH = Server.MapPath("~/Logs/SubscribedEmails.xml"); XDocument Emailxml = XDocument.Load(FILE_PATH); var EmailExist = Emailxml.Descendants("Email_Entry") .Any(x => (string)x.Element("EmailID") == txtEmailSubscribe.Text); if (EmailExist) { lblEmail.Text = "EmailID already exist"; } else { Emailxml.Root.Add(new XElement("Email_Entry", new XAttribute("EmailID", EmailID) )); Emailxml.Save(FILE_PATH); lblEmail.Text = "Subscribed Successfully"; } }can anybody tell whts wrong?
解决方案 This will return only the duplicated email addresses. var duplicateEmails = Emailxml.Descendants("Email_Entry") // email node .GroupBy(x => x.Name) // group by element .Where(x => x.Count() > 1) // select groups where more than 1 found .Select(x => x.Key.LocalName) // element contents .ToList();更多推荐
我想检查XML中的重复元素,并在标签上为重复元素提供警报
发布评论