On sait qu'il existe un fichier XML (bookstore.xml) comme suit :
<?xml version="1.0" encoding="gb2312"?>
<librairie>
<livre genre="fantastique" ISBN="2-3631-4">
<title>L'héritage d'Obéron</title>
<auteur>Corets, Eva</auteur>
<prix>5,95</prix>
</livre>
</bookstore>
1. Insérez un nœud <book> dans le nœud <bookstore> :
XmlDocument xmlDoc=nouveau XmlDocument();
xmlDoc.Load("librairie.xml");
XmlNode root=xmlDoc.SelectSingleNode("librairie");//Trouver <librairie>
XmlElement xe1=xmlDoc.CreateElement("book");//Créer un nœud <book>
xe1.SetAttribute("genre","Li Zanhong");//Définir l'attribut de genre du nœud
xe1.SetAttribute("ISBN","2-3631-4");//Définir l'attribut ISBN du nœud
XmlElement xesub1=xmlDoc.CreateElement("title");
xesub1.InnerText="CS de débutant à compétent";//Définir les nœuds de texte
xe1.AppendChild(xesub1);//Ajouter au nœud <book>
XmlElement xesub2=xmlDoc.CreateElement("auteur");
xesub2.InnerText="houjie";
xe1.AppendChild(xesub2);
XmlElement xesub3=xmlDoc.CreateElement("prix");
xesub3.InnerText="58.3";
xe1.AppendChild(xesub3);
root.AppendChild(xe1);//Ajouter au nœud <librairie>
xmlDoc.Save("librairie.xml");
//=================================================
Le résultat est :
<?xml version="1.0" encoding="gb2312"?>
<librairie>
<livre genre="fantastique" ISBN="2-3631-4">
<title>L'héritage d'Obéron</title>
<auteur>Corets, Eva</auteur>
<prix>5,95</prix>
</livre>
<livre genre="李zanhong" ISBN="2-3631-4">
<title>CS de l'entrée au master</title>
<auteur>Houjie</auteur>
<prix>58,3</prix>
</livre>
</bookstore>
2. Modifiez le nœud : changez la valeur de genre du nœud dont la valeur d'attribut de genre est "Li Zanhong" en "mettre à jour Li Zanhong", et modifiez le texte du nœud enfant <auteur> de ce nœud en "Ya". Sheng".
XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//Obtenir tous les nœuds enfants du nœud librairie
foreach (XmlNode xn dans nodeList) // Traverser tous les nœuds enfants
{
XmlElement xe=(XmlElement)xn;//Convertir le type de sous-nœud en type XmlElement
if(xe.GetAttribute("genre")=="Li Zanhong")//Si la valeur de l'attribut genre est "Li Zanhong"
{
xe.SetAttribute("genre","update Li Zanhong");//Modifier cet attribut pour "mettre à jour Li Zanhong"
XmlNodeList nls=xe.ChildNodes;//Continuer pour obtenir tous les nœuds enfants du nœud enfant xe
foreach(XmlNode xn1 en nls)//Traverse
{
XmlElement xe2=(XmlElement)xn1;//Type de conversion
if(xe2.Name=="author")//Si trouvé
{
xe2.InnerText="Yasheng";//Modifier
break;//Trouvez-le et sortez.
}
}
casser;
}
}
xmlDoc.Save("librairie.xml");//Enregistrer.
//================================================= ==
Le résultat final est :
<?xml version="1.0" encoding="gb2312"?>
<librairie>
<livre genre="fantastique" ISBN="2-3631-4">
<title>L'héritage d'Obéron</title>
<auteur>Corets, Eva</auteur>
<prix>5,95</prix>
</livre>
<livre genre="update李zanhong" ISBN="2-3631-4">
<title>CS de l'entrée au master</title>
<auteur>Agression</auteur>
<prix>58,3</prix>
</livre>
</bookstore>
3. Supprimez l'attribut genre du nœud <book genre="fantasy" ISBN="2-3631-4"> et supprimez le <book genre="update Li Zanhong" ISBN="2-3631-4 "> nœud.
XmlNodeList xnl=xmlDoc.SelectSingleNode("librairie").ChildNodes
foreach(XmlNode xn en xnl)
{
XmlElement xe=(XmlElement)xn;
if(xe.GetAttribute("genre")=="fantastique")
{
xe.RemoveAttribute("genre");//Supprimer l'attribut genre
}
sinon if(xe.GetAttribute("genre")=="updateLi Zanhong")
{
xe.RemoveAll();//Supprimer tout le contenu du nœud
}
}
xmlDoc.Save("librairie.xml");
//=============================================
Le résultat final est :
<?xml version="1.0" encoding="gb2312"?>
<librairie>
<livre ISBN="2-3631-4">
<title>L'héritage d'Obéron</title>
<auteur>Corets, Eva</auteur>
<prix>5,95</prix>
</livre>
<livre>
</livre>
</bookstore>
4. Affichez toutes les données.
XmlNode xn=xmlDoc.SelectSingleNode("librairie");
XmlNodeList xnl=xn.ChildNodes
foreach(XmlNode xnf en xnl)
{
XmlElement xe=(XmlElement)xnf;
Console.WriteLine(xe.GetAttribute("genre"));//Afficher la valeur de l'attribut
Console.WriteLine(xe.GetAttribute("ISBN"));
XmlNodeList xnf1=xe.ChildNodes;
foreach (XmlNode xn2 dans xnf1)
{
Console.WriteLine(xn2.InnerText);//Afficher le texte du nœud enfant
}
}