Archief - [PROG]VB.NET XML gegevens toevoegen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

saikoboarder

Legacy Member
Ik heb een XML bestandje op mijn C schijf staan

Code:
<bezoeker>
 <voornaam>blabla</voornaam>
 <achternaam>blabla</achternaam>
.....
</bezoeker>
Nu heb ik een VB programma geschreven dat textboxen kan uitlezen en daarvan een XML bestandje maakt met die lay-out.
Maar iedere keer als ik het programma run word de oude versie overschreven.
Ik wil het toevoegen.

Code:
<bezoeker>
 <voornaam>blabla1</voornaam>
 <achternaam>blabla1</achternaam>
.....
</bezoeker>
<bezoeker>
 <voornaam>blabla2</voornaam>
 <achternaam>blabla2</achternaam>
.....
</bezoeker>
Ik heb liggen googelen en denk dat ik in de richting van nodes moet gaan werken maar ik krijg het toch niet klaar.
Iemand een idee ?

Albireo

Legacy Member
Je zou een DataSet kunnen maken met daarin een Bezoekers-DataTable en daarin lees je de gehele inhoud van het XML-bestand via de ReadXml-methode. Je leest alle textboxen uit en je zet die in een DataRow die je toevoegt aan de DataTable. En tenslotte schrijf je alles weer naar het XML-bestand via de WriteXml-methode van de DataSet. Er zullen waarschijnlijk wel een paar addertjes onder het gras zitten. ;)

(disclaimer: I'm not a programmer)

saikoboarder

Legacy Member
Dan moet ik het ganse XML bestand iedere keer gaan inlezen. Dat neemt veel resourses in en dat duurt lang.
maar ik houd de mogelijkheid in men achterhoofd

saikoboarder

Legacy Member
jawel maar de code die hierboven staat is overgetyped en dus ook niet XML conform.

saikoboarder

Legacy Member
die site had ik ook al gevonden.
ze voegen ook telkens maar 1 rij toe.
Ik wil een ganse gebruiker toevoegen.

Albireo

Legacy Member
aangepaste versie van de CodeProject code:

Code:
XmlDocument doc = new XmlDocument();
            doc.Load("test.xml");
            XmlElement elname = doc.CreateElement("naam");
            elname.InnerText = "appended name";
            XmlElement elfirstname = doc.CreateElement("voornaam");
            elfirstname.InnerText = "appended name";
            XmlElement elVisitor = doc.CreateElement("bezoeker");
            elVisitor.AppendChild(elname);
            elVisitor.AppendChild(elfirstname);
            doc.DocumentElement.AppendChild(elVisitor);
            doc.Save("test.xml");


note to self: do not load 50MB files into Notepad :sop:

saikoboarder

Legacy Member
Code:
dim doc as new xmldocument
doc.Load("test.xml");

zo werkt het idd.
maar nu moet ik nog alles gaan laden

Skarr

Legacy Member
ik zou een class bezoeker maken en die dan xml serializen

dan moet ge ni zitten knoeien met xml nodes en al die rommel

Albireo

Legacy Member
Da's wel pokketraag hoor (maar wel gemakkelijk), meer dan 6 seconden op een Core 2 Duo E6600/4GB RAM om 1 record te appenden voor een bestand met 500000 records (0.15s bij 10000 records).

Hoe groot is dat XML-bestand van jou eigenlijk? Als het echt groot is en je moet geregeld iets toevoegen zou je dan niet beter met een database werken? En dan kan je nog altijd de gegevens naar XML exporteren als't nodig is.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan