Mon problème est que j'ai un élément e-mail d'occurence max 3 dans mon fichier xml comme indiqué ci-dessous:Mise à jour xml innerText avec les noms de balises similaires (élément)
<contact>
<email>A</email>
<email>B</email>
<email>C</email>
</contact>
Lorsque j'ai essayé de modifier les 3 tags avec le code suivant ci-dessous,
xnl[0]["email"].InnerText = "D";
xnl[0]["email"].InnerText = "E";
xnl[0]["email"].InnerText = "F";
Seul le premier e-mail est édité, il y a le problème de même à cause de l'écrasement nom de l'élément XML.
<contact>
<email>F</email>
<email>B</email>
<email>C</email>
</contact>
J'ai essayé xnl[0]["email"][0].InnerText = "D";
d'avoir choisi le premier nom de l'élément de courrier électronique, mais cela ne fonctionne pas. Toute suggestion?
MISE À JOUR: (avec le code)
C# code:
public String updateContact(Int32 getPhoneNumber, Int32 getWorkNumber, Int32 getMobileNumber, String photo, String firstName, String lastName, String gender, String dateOfBirth, Int32 home, Int32 work, Int32 mobile, String email1, String email2, String email3)
{
XmlDocument doc = new XmlDocument();
doc.Load("xmlFile/xml/myContactBook/src/myContactBook.xml");
XmlNodeList xnl = doc.SelectNodes("/contactBook/contact/phone[home='" + getPhoneNumber + "']/parent::* | /contactBook/contact/phone[work='" + getWorkNumber + "']/parent::* | /contactBook/contact/phone[mobile='" + getMobileNumber + "']/parent::* ");
if (xnl.Count != 0)
{
xnl[0]["photo"].InnerText = photo;
xnl[0]["firstName"].InnerText = firstName;
xnl[0]["lastName"].InnerText = lastName;
xnl[0]["gender"].InnerText = gender;
xnl[0]["dateOfBirth"].InnerText = dateOfBirth;
xnl[0]["phone"]["home"].InnerText = home.ToString();
xnl[0]["phone"]["work"].InnerText = work.ToString();
xnl[0]["phone"]["mobile"].InnerText = mobile.ToString();
xnl[0]["email"].InnerText = email1;
xnl[0]["email"].InnerText = email2;
xnl[0]["email"].InnerText = email3;
}
doc.Save("xmlFile/xml/myContactBook/src/myContactBook.xml");
return "Updated";
}
code xml:
<contact>
<photo>profilepic/default.jpg</photo>
<firstName>Hender</firstName>
<lastName>Casio</lastName>
<gender>Female</gender>
<dateOfBirth>1985-04-23</dateOfBirth>
<phone>
<home>4453278</home>
<work>3451390</work>
<mobile>54356635</mobile>
</phone>
<email>[email protected]</email>
<email>[email protected]</email>
<email>[email protected]</email>
</contact>
Merci pour la réponse. Désolé Hassan Nisar, je n'étais peut-être pas assez clair sur mon code. J'ai maintenant édité le message original. Comment puis-je effectuer une nouvelle recherche dans un XmlNodeList? C'est possible? – Jonathan
XmlNodeList représente une collection ordonnée de noeuds. Vous pouvez traverser XmlNodeList en utilisant la boucle. Si vous êtes sûr qu'un résultat sera retourné, vous pouvez utiliser 'SelectSingleNode'. – Hassan
Je viens de mettre à jour ma réponse s'il vous plaît vérifier. – Hassan