我想检查XML中的重复元素,并在标签上为重复元素提供警报 [英] I want to check duplicate element in XML and give alert on label for duplicate element

查看:73
本文介绍了我想检查XML中的重复元素,并在标签上为重复元素提供警报的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

XML: -

<?xml version =1.0encoding =utf-8?> 
< List>
< Email_Entry>< / Email_Entry>
< Email_Entry EmailID =qw@gmail.com/>
< Email_Entry EmailID =qw@gmail.com/>
< Email_Entry EmailID =qw@gmail.com/>
< Email_Entry EmailID =qw@gmail.com/>
< Email_Entry EmailID =shssh@gmail.com/>
< / 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)< span class =code-comment> // 逐个元素
.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.com" />
  <Email_Entry EmailID="qw@gmail.com" />
  <Email_Entry EmailID="qw@gmail.com" />
  <Email_Entry EmailID="qw@gmail.com" />
  <Email_Entry EmailID="shssh@gmail.com" />
</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中的重复元素,并在标签上为重复元素提供警报的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆