A voir la version du framework que tu peux utiliser, mais si tu as accès à Linq To Xml autant s'en servir, ce sera aussi simple. Par contre il faut connaître Linq, les
types anonymes... mais ce n'est pas insurmontable
Sinon on peut aussi utiliser les classes standards pour manipuler du XML (XmlDocument). Pas besoin du DataSet en tout cas, je ne m'en suis jamais servi et encore moins pour du XML.
Bref, retour à Linq to Xml. Voici comment charger un fichier
Dim doc As XDocument = XDocument.Load("monFichierXml.xml")
Et pour enregistrer ensuite
doc.Save("nouveauFichier.xml")
Par contre cela va ajouter par défaut la déclaration XML au début. Mais il est possible de s'en débarrasser si c'est nécessaire, en passant par un XmlWriter et XmlWriterSettings pour la sauvegarde.
Après il reste juste à parcourir et modifier les noeuds au besoin. Par exemple la requête suivante permet de récupérer les noeuds CD du XML.
1 2
| Dim result = From n In doc.Descendants("CD")
Select n; |
Dans ton cas, ce qui nous interesse ce sont les noeuds COMPANY et PRICE qui sont enfants du noeud CD. On peut donc faire
1 2 3
| Dim result = From n In doc.Descendants("CD")
Select New With {.Company = n.Element("COMPANY"),
.Price = n.Element("PRICE")} |
On crée ici un objet anonyme qui contiendra le noeud COMPANY et le noeud PRICE.
On indique également les noms des propriétés pour accéder à ces informations (Company et Price).
On n'indique pas le type de l'objet result (Dim sans As), il sera déterminé automatiquement.
Au final on va obtenir un IEnumerable d'objets anonymes. Chacun représentant le couple COMPANY/PRICE d'un noeud CD. Il suffit maintenant des les parcourir et de mettre la valeur du noeud PRICE dans COMPANY
1 2 3
| For Each cd In result
cd.Company.Value = cd.Price.Value;
Next |
Par contre l'option Infer dont être sur ON sinon ça ne fonctionne pas. On a pas ce genre de souci en C#, encore une bonne raison de faire du C# et pas du VB.Net
Après tu mets ça dans le bon ordre, tu adaptes au besoin, et tu as tout bon ^^
Partager