Toon posts:

[VB6 XML]Inspringen van output file

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik gebruik in mijn vb6 applicatie een xml-bestand waarin ik allerlei projectgegevens, opgegeven door de gebruiker, in opsla.

Het uitlezen, opslaan en tonen van dit xml-bestand gaat prima.

Alleen als ik het xml-bestand open in Notepad ziet het er niet uit.
De meeste gegevens staan op 1 regel terwijl er een boomstructuur in zit.

Mijn vraag is hoe sla ik mijn data op zodat elke tag op een nieuwe regel komt en ingesprongen zodat ik een goed leesbaar bestand krijg?

Ikzelf dacht dat het een property zou zijn van mijn xmlDocument-object, iets als
code:
1
.formatted = vbIndent
maar die kan ik niet vinden.
Ik heb ook
code:
1
.preserveWhiteSpace = True
geprobeerd maar dat leverde ook niets op.
Via Google en GoT Search ben ik er ook niet uit gekomen, dan krijg ik allemaal verwijzingen naar XLT en XLS.
Ik ben net nieuw met XML en van XLT en XLS snap ik nog niets. Volgens mij heb ik die ook niet nodig, toch?

Ik gebruik:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim oXmlDoc As New MSXML2.DOMDocument40

  oXmlDoc.async = False
  oXmlDoc.validateOnParse = False
 
  'Xml inlezen
  oXmlDoc.Load sXMLFile 
  
  .
  .
  .

  'Xml opslaan:
  Call oXmlDoc.Save(oXmlDoc.url)


De xml zoals die eruit moet zien:
code:
1
2
3
4
5
6
7
8
<?xml version="1.0"?>
  <Settings>
    <Naam type="text">Bakker</Naam>
    <Woonplaats type="text">Anjum</Woonplaats>
  </Settings>
.
.
.


De xml zoals het nu gaat:
code:
1
2
<?xml version="1.0"?>
<Settings<Naam type="text">Bakker</Naam><Woonplaats type="text">Anjum</Woonplaats>

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
misschien kun je een instance van tidy-html aanroepen??? daar zit een source-formatting mogelijkheid in...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Verwijderd

Topicstarter
@faabman:
Bedoel je hiermee dat het niet kan met MSXML2.DOMDocument40?
Ze zullen bij MicroSoft toch ook wel tegen dit 'probleem' aangelopen zijn?

Verwijderd

Topicstarter
*Schopje*
Heeft iemand voor het weekend nog een suggestie?

Verwijderd

Misschien helpt googlen ? Ik weet niets van XML, maar heb in 5 minuten dit linkje gevonden.

Verwijderd

Topicstarter
Uiteraard had ik ook al gezocht met google, maar dat linkje had ik nog niet gevonden.
Bedankt. _/-\o_

Ik zal het proberen met XSLT.
Ik zal eerst moeten uitzoeken hoe ik die aan mijn XML koppel, maar daar kom ik vast wel uit. O-)

Verwijderd

Topicstarter
Ik heb het inmiddels opgelost door de volgende procedure te maken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Public Sub indentXMLDoc(sOutputFile As String)
On Error GoTo indentXMLDoc_Error
Dim rdr As New MSXML2.SAXXMLReader40
Dim cnth As IVBSAXContentHandler
Dim wrt As New MXXMLWriter40
Dim oXmlDoc As New MSXML2.DOMDocument40
  
  wrt.indent = True
  wrt.standalone = True
  Set cnth = wrt
  Set rdr.contentHandler = cnth
  rdr.parseURL sOutputFile
  oXmlDoc.loadXML wrt.output
  oXmlDoc.Save sOutputFile
  
  'opruimen:
  Set wrt = Nothing
  Set rdr = Nothing
  Set cnth = Nothing
  Set oXmlDoc = Nothing
  
On Error GoTo 0
  Exit Function

indentXMLDoc_Error:
  SchrijfError "Error " & Err.Number & " (" & Err.Description & _
    ") in procedure indentXMLDoc of Module modXML"
End Sub


Deze code heb ik overigens gevonden via Google Groups.

Bedankt iedereen voor het meedenken.
Pagina: 1