避免在xml文件中重复输入c#

时间:2016-10-22 09:19:34

标签: c# asp.net .net xml linq

我正在尝试限制重复输入到XML文件,下面是XML文件。

<?xml version="1.0" standalone="yes"?>
<Info>
<Details>
<ID>Ryan</ID>
</Details>
<Details>
<ID>Danny</ID>
</Details>
</Info>

现在,如果我再次尝试将Ryan或Danny添加到ID中,我应该提醒用户名已经存在。

我使用下面的代码,但它不起作用。 strName是一个字符串,具有要添加的用户名值。任何人都可以提供建议吗?

XDocument xDoc = XDocument.Load(Server.MapPath("~/Info.xml"));
bool userExistsAlready = xDoc.Descendants("Details").Any(x => (string)x.Attribute("ID") == strName);
if (userExistsAlready)
{
    //alert
}

2 个答案:

答案 0 :(得分:1)

尝试这种方式:

bool userExistsAlready = xDoc.Descendants("Details")
                             .Elements("ID")
                             .Any(x => x.Value == "Ryan");

您的代码存在的问题是它尝试访问属性 ID。但ID实际上是元素<Details>中包含的另一个XML元素。

答案 1 :(得分:0)

您可以将ID设置为Details的属性,然后使用XmlDocument方法GetElementByID检查该条目是否存在,或者实现for循环,该循环检查由于调用GetElementsByName方法而导致的数组中每个元素的属性InnerText。