2016-10-22 4 views
3

Ich versuche, doppelte Einträge auf eine XML-Datei zu beschränken und unten ist die XML-Datei.Vermeiden Sie doppelten Eintrag in XML-Datei C#

Wenn ich jetzt versuche, Ryan oder Danny wieder zu der ID hinzuzufügen, sollte ich warnen wie Benutzername bereits existiert.

Ich verwende den folgenden Code und es funktioniert nicht. strName ist eine Zeichenfolge und hat einen hinzuzufügenden Benutzernamen. Kann jemand Vorschläge machen?

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

Antwort

1

Versuchen Sie, diese Art und Weise:

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

Das Problem mit Ihrem Code ist, dass es AttributID zuzugreifen versucht. Aber ID ist in der Tat ein anderes XML-Element im Element <Details> enthalten.

+0

Wie kann ich eine andere Elemente namens "Abteilung" mit und Bedingung überprüfen. Ich habe einige Codes ausprobiert und konnte es nicht verstehen. – vicky

+0

bool usertExists = xDocss.Descendants ("Details"). Elemente ("ID"). Any (x => x.Value == Name) && xDocss.Descendants ("Details"). Elemente ("Password"). Any (y => y.Wert == Pwd); – vicky

+0

@vicky Nun, das ist eine andere Frage. Es wird davon abgeraten, Fragen in Kommentaren zu beantworten. Versuchen Sie, einen anderen Post mit der relevanten XML-Datei zu schreiben. –

0

Sie ID als Attribut-Details einstellen könnte und dann prüfen, ob dieser Eintrag die XmlDocument Methode GetElementByID existieren, oder eine für Zyklus implementieren, die die Eigenschaft Innertext jedes Element im Array aus dem Aufruf von getElementsByName Verfahren resultierende auscheckt .

Verwandte Themen