我正在尝试限制重复输入到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
}
答案 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。