Woorden in XML bestand vinden en vervangen

Status
Niet open voor verdere reacties.

wouter1997

Gebruiker
Lid geworden
21 aug 2010
Berichten
171
Beste,

Ik heb een vraagje,
In de resources van mijn VB appalicatie staat een XML bestandje opgeslagen met een hoop tekst.
Nu wat ik wil is: -Het lezen van een XML bestand.
-Bijvoorbeeld het woord "mylist" vinden en vervangen met een door een gebruiker ingevoerd woord vervangen.

Code:
<?xml version="1.0" encoding="utf-8"?>
<playlist name="mylist" xml:lang="en">
<song>
<title>Little Fluffy Clouds</title>
<artist>the Orb</artist>
</song>
<song>
<title>Goodbye mother Earth</title>
<artist>Underworld</artist>
</song>
</playlist>

Hoe moet ik dit gaan doen, kan iemand mij een beetje op gang helpen?

Alvast bedankt, Wouter
 
Hallo,

Er zijn volgens mij meerdere manieren om dit te doen, waarvan dit er 2 zijn:
  1. Je kan het gewoon als tekst-bestand behandelen, wat als nadeel heeft dat ook de headers meegenomen worden (kan ook een voordeel zijn)
  2. Je kan het als XML-bestand behandelen, waarvoor je hier een tutorial kan vinden: http://vb.net-informations.com/xml/vb.net-xml-tutorial.htm

In het voorbeeld zou ik persoonlijk kiezen voor de eerste manier, aangezien die ook geen verschil maakt tussen headers of values, maar je moet zelf kiezen. Beide zijn volgens mij redelijk te doen, ook al heb ik zelf nooit met XML bestanden gewerkt, dus weet ik niet goed hoe ze werken, maar er is dan vast wel iemand anders.

MartinJM
 
De bedoeling is dat het XML bestand word behandeld als een gewoon tekst bestand.
 
Ok, dan zal je het bestand moeten openen, de inhoud ervan aanpassen en weer wegschrijven naar hetzelfde bestand.
Hier een klein voorbeeld, je moet hiervoor wel "Imports System.IO" bovenaan (buiten je class) hebben staan:
[CPP]Dim FilePath As String = Path.Combine("C:\", "Bestand") ''"// Het pad naar het bestand.
Dim Vervang As String = "mylist" ''// Hetgeen wat je wil gaan vervangen
Dim VervangDoor As String = "wat je wil" ''// Waarnaar je het wil gaan vervangen

''// Checken of het bestand wel bestaat en evt een melding geven.
If Not File.Exists(FilePath) Then
MsgBox("Bestand bestaat niet!")
Exit Sub
End If

''// Het bestand openen en de inhoud in de variable 'Inhoud' zetten.
Dim Stream1 As New FileStream(FilePath, FileMode.Open)
Dim Reader1 As New StreamReader(Stream1)
Dim Inhoud As String = Reader1.ReadToEnd
Reader1.Close()
Stream1.Close()

''// De inhoud aanpassen.
Inhoud = Inhoud.Replace(Vervang, VervangDoor)

''// Het bestand legen en de nieuwe inhoud erin schrijven.
Dim Stream2 As New FileStream(FilePath, FileMode.Truncate)
Dim Writer2 As New StreamWriter(Stream2)
Writer2.Write(Inhoud)
Writer2.Close()
Stream2.Close()

''// Melding weergeven dat het klaar is.
MsgBox("Done!")[/CPP]

Als je de code niet begrijpt kan je altijd om meer uitleg vragen :thumb:

MartinJM
 
Laatst bewerkt:
@MartinJM:
Weet je hier zeker dat dit het / teken moet zijn en niet het \ teken?
Path.Combine("C:/", "Bestand")
 
@Edmoor:
Je hebt gelijk. Ik had het verkeerde teken gebruikt. Ik heb het aangepast in de originele post. Bedankt voor het wijzen op de fout :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan