Toon posts:

[VB.NET 2005] Xml document updaten

Pagina: 1
Acties:
  • 20 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik gebruik een xml document om configuraties op te slaan van vb.net controls.
Ik wil dus een document zoals dit:

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<configuratie>
  <datagridviews>
    <datagridview1>
      <kolom1>
        <headertext>kolomnaam</headertext>
      </kolom1>
    </datagridview1>
    <datagridview2>
      <kolom1>
        <headertext>kolomnaam</headertext>
      </kolom1>
    </datagridview2>
  </datagridviews>
  <textboxen>
    <textbox1>
      <text>een tekst</text>
    </textbox1>
    <textbox2>
      <text>nog een tekst</text>
    </textbox2>
  </textboxen>
</configuratie>

Alle configuraties komen dus in hetzelfde document terecht en worden 1 voor 1 toegevoegd of gewijzigd. Ik wil dus aan een huidig xml document gegevens toevoegen en ook nog kunnen bepalen waar, dus als er een nieuwe textbox bijkomt, wil ik hem na <textbox2> hebben. Ik wil ook dat huidige control configuraties kunnen worden gewijzigd, dus bijv de headertext van kolom1 wijzigen in "naam".

Ik ben op internet aantal dingen tegengekomen maar niets wat aan al mijn eisen voldoet.
Ik heb bijvoorbeeld de Microsoft DiffPatch gevonden, dat is een tool, daarmee kan je 2 xml documenten vergelijken en de wijzingen doorvoeren, maar deze kijkt alleen wat er in document 2 anders is dan in document 1 en slaat deze wijzigingen op. Dus dan ben je je oude gegevens kwijt.
Een andere mogelijkheid is werken met een dataset, maar volgens mij kan je daarmee niet precies bepalen waar die nieuwe gegevens terecht moeten komen en is het ook niet makkelijk om hele soorten elementen toe te voegen, dus als je bijvoorbeeld ook nog labels wilt.

Ik hoop dat iemand mij op weg kan helpen, een methode weet waarmee alles wat ik wil ook mogelijk wordt. Samenvattend: gegevens toevoegen aan huidig xml document, bepalen waar ze moeten komen en het wijzigen van huidige gegevens.

  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

Misschien moet je eens naar de System.Xml namespace kijken? Hierin heb je XmlDocument en XmlElement.

Skill is when luck becomes a habit.


Verwijderd

Topicstarter
Zoiets als dit dus: http://www.devasp.net/net/articles/display/571.html ?
De Private Sub AddDeleteAttribute() code.
Heb jij anders misschien nog een goede site kunnen vinden ?

[ Voor 22% gewijzigd door Verwijderd op 23-04-2007 14:36 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op maandag 23 april 2007 @ 14:09:
Ik hoop dat iemand mij op weg kan helpen, een methode weet waarmee alles wat ik wil ook mogelijk wordt. Samenvattend: gegevens toevoegen aan huidig xml document, bepalen waar ze moeten komen en het wijzigen van huidige gegevens.
Waarom gebruik je niet gewoon een XMLDocument en manipuleer je de nodes middels functionaliteit van dat ding?
Verwijderd schreef op maandag 23 april 2007 @ 14:09:
Ik heb bijvoorbeeld de Microsoft DiffPatch gevonden, dat is een tool, daarmee kan je 2 xml documenten vergelijken en de wijzingen doorvoeren, maar deze kijkt alleen wat er in document 2 anders is dan in document 1 en slaat deze wijzigingen op. Dus dan ben je je oude gegevens kwijt.
Nogal wiedes, het genereert namelijk een diff-patch (dus alleen de wijzigingen/verschillen)
Verwijderd schreef op maandag 23 april 2007 @ 14:09:
Een andere mogelijkheid is werken met een dataset, maar volgens mij kan je daarmee niet precies bepalen waar die nieuwe gegevens terecht moeten komen en is het ook niet makkelijk om hele soorten elementen toe te voegen, dus als je bijvoorbeeld ook nog labels wilt.
:? Waarom zou je niet kunnen bepalen waar de gegevens terecht komen? (en daarbij: wat doet het er toe?) En waarom zou je geen 'hele soorten elementen' kunnen toevoegen? Het is maar net hoe je je dataset in elkaar steekt hoor :?

[ Voor 58% gewijzigd door RobIII op 23-04-2007 15:01 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
dus jij denkt dat hetgene wat ik wil ook met datasets haalbaar is ?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op maandag 23 april 2007 @ 15:14:
dus jij denkt dat hetgene wat ik wil ook met datasets haalbaar is ?
Ik denk niet, ik weet ;) Het is zelfs mogelijk met ini-files, registry entries, binaire bestanden en ga zo maar door. Hell, het is zelfs mogelijk met emails of door de settings af te drukken en weer in te scannen van een foto van de print en daar wat OCR op los te laten :+ Het is maar net hoe je het aanpakt en (slim) indeelt.

Wat je nu aan het doen bent is niets anders dan het persisten van data, en hoe/waar je dat doet moet je helemaal zelf weten. Ik persoonlijk zie niet zo snel in waarom je er een dataset bij zou halen ofzo, maar als je dat gelukkig maakt...

Programmeren is zelf nadenken. Natuurlijk is het leuk als je bestaande libraries of functionaliteit ergens van kunt her/gebruiken maar als dat niet vindbaar is of niet voldoet aan je eisen dan dev je het lekker zelf.

[ Voor 50% gewijzigd door RobIII op 23-04-2007 15:23 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Ik had het idee dat het met een dataset makkelijker was om te updaten, maar dat zal wel geen verschil maken. Ik probeer nu met XmlDocument een XmlElement er aan toe te voegen, zoals jullie mij hadden aangeraden, alleen in het begin kreeg ik een paar foutmeldingen, die zijn nu verholpen alleen de data wordt niet daadwerkelijk aan het document toegevoegd.
Ik zal de code effe posten:
Visual Basic .NET:
1
2
3
4
5
6
7
        Dim xmlDoc As New XmlDocument
        xmlDoc.Load(filename)
        Dim objElem As XmlElement = xmlDoc.CreateElement("test")
        objElem.InnerText = "tttt"
        Dim xmlNode As XmlElement = xmlDoc.CreateElement("datagridviews")
        xmlNode.AppendChild(objElem)
        xmlDoc.Save(filename)

Dus ik heb een huidig xml document, die laad ik in, ik maak een nieuw element aan, geef het een naam en waarde en geef aan waar ik die wilt toevoegen. Vervolgens sla ik het document weer op.
Heeft iemand enig idee waarom de data niet daadwerkelijk wordt toegevoegd aan het xml document ?

  • mindcrash
  • Registratie: April 2002
  • Laatst online: 22-11-2019

mindcrash

Rebellious Monkey

Verwijderd schreef op maandag 23 april 2007 @ 15:42:
Heeft iemand enig idee waarom de data niet daadwerkelijk wordt toegevoegd aan het xml document ?
Omdat je de node niet toevoegd aan het document?

"The people who are crazy enough to think they could change the world, are the ones who do." -- Steve Jobs (1955-2011) , Aaron Swartz (1986-2013)


Verwijderd

Topicstarter
mindcrash schreef op maandag 23 april 2007 @ 15:46:
[...]


Omdat je de node niet toevoegd aan het document?
ja tuurlijk 8)7
xmlDoc.DocumentElement.AppendChild(xmlNode)
nu is ie inderdaad wel toegevoegd

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Volgende keer even zelf debuggen. Dit is echt té basic.
Debuggen: Hoe doe ik dat?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.