C#:检查 XML 中的重复元素

标签 c# xml

我想检查 XML 中的重复元素。请帮忙!

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>

aspx.cs:

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";
    }            
}

最佳答案

检查属性值而不是元素:

var EmailExist = Emailxml.Descendants("Email_Entry")
        .Any(x => x.Attribute("EmailID").Value == txtEmailSubscribe.Text);

关于C#:检查 XML 中的重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42593230/

相关文章:

Java DOM : getElementsByTagNameNS for an element in NO namespace

java - 如何在 Java 中使用 XPath 访问读取 XML 的值

xml - 使用 XSLT 从 XML 中的选择性节点中删除选择性附加命名空间

c# - 为什么 Assembly.GetType() 找不到我的类(class)?

c# - 执行应用程序所需的库 'hostpolicy.dll'

c# - 在添加/删除项目时动态调整 ListView 高度?

xml - 具有任意 XML 标记的 SAP 简单转换

c# - 如果图像丢失则加载默认图像

c# - 如何使用 TFS 客户端库获取 PullRequest 的 Web URL?

java - Android 中两个 View 的 block 居中