Avatar billede brynil Nybegynder
07. maj 2005 - 20:12 Der er 6 kommentarer og
1 løsning

Eksporter til XML forts. fra spm 615166 BAK

Hej Bak!

Du nævnte at du kunne give et eksempel der udvider eksemplet fra ovennævnte spm. med et yderligere niveau. Det er jeg meget interesseret i, for jeg kan ikke få det til at virke når jeg anvender et loop.

Jeg tror du ved hvad jeg har brug for, men vil lige skrive et eks. hér:

<root>
  <Produkt>
      <Navn/>
      <Type>
          <Id/>
          <Orig/>
      </Type>
      ...
  </Produkt>
  ....
</root>

Det er ikke væsentligt om det er det samme som det her viste (elementerne er ikke tomme), bare jeg får fat i hvordan jeg laver loopet på Produkt med de indeholdte niveauer.

Håber det er tilstrækkeligt, ellers bare sig til.
Avatar billede bak Forsker
07. maj 2005 - 20:21 #1
jo, jeg skal nok vende tilbage, men ikke før mandag :-)
Avatar billede brynil Nybegynder
07. maj 2005 - 20:22 #2
Helt fint! Jeg var ikke sikker på om vi havde talt forbi hinanden.
Avatar billede bak Forsker
08. maj 2005 - 17:42 #3
Så har jeg kigget lidt på det.
Har lagt et tyndt eksempel her:
http://www.tbdl.dk/excel/xmlver2.xls


Her er koden. Håber den er lidt selvforklarende :-)


Sub XMLNiveauTest()

Dim oXMLDOM As Object  'As DOMDocument40
Dim oProcessInfo As Object  'As IXMLDOMProcessingInstruction
Dim oNiveau1 As Object
Dim oNiveau2 As Object
Dim oNiveau3 As Object
Dim rngXML As Range
Dim rngCell As Range

  Set rngXML = Sheets("Ark3").Range("A2:A50")
  Set oXMLDOM = CreateObject("Microsoft.XMLDOM")
  Set oProcessInfo = oXMLDOM.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")
  'opret hovedelementerne
  Set oXMLDOM.documentElement = oXMLDOM.createElement("Root")  'niveau1
  Set oNiveau2 = oXMLDOM.createElement("Product")    'niveau 2
  Set oNiveau3 = oXMLDOM.createElement("Type")      'niveau 3
  'Processing instructions
  oXMLDOM.insertBefore oProcessInfo, oXMLDOM.childNodes.Item(0)
  'opret underelementerne
  oNiveau2.appendChild oXMLDOM.createElement("Navn")

  oNiveau3.appendChild oXMLDOM.createElement("ID")
  oNiveau3.appendChild oXMLDOM.createElement("Orig")

  'kør igennem alle celler i rngXML
  For Each rngCell In rngXML
      'indsæt i elementet navn fra kolonne A
      oNiveau2.childNodes(0).Text = rngCell.Offset(, 0).Text
      'indsæt i elementet Type underelementerne ID og Orig fra kolonne B og C
      oNiveau3.childNodes(0).Text = rngCell.Offset(, 1).Text
      oNiveau3.childNodes(1).Text = rngCell.Offset(, 2).Text
      'sammenkobling af niveau 2 og 3
      'her "appendes" hele niveau3 til niveau2
      oNiveau2.appendChild oNiveau3
      'Klargør hele noden
      oXMLDOM.documentElement.appendChild oNiveau2.CloneNode(True)
  Next
  'lav fil
  oXMLDOM.Save (ThisWorkbook.Path & "\myXMLfile2.xml")
  'ryd op
  Set oProcessInfo = Nothing
  Set oXMLDOM = Nothing
  Set oNiveau1 = Nothing
  Set oNiveau2 = Nothing
  Set oNiveau3 = Nothing
  MsgBox "Færdig, filen ligger her : " & vbCrLf & ThisWorkbook.Path & "\myXMLfile2.xml", vbInformation
End Sub
Avatar billede bak Forsker
08. maj 2005 - 17:44 #4
skal lige siges at variablen oNiveau1 aldrig tages ibrug, så slet bare de par linier
Avatar billede brynil Nybegynder
08. maj 2005 - 18:57 #5
Lige i øjet. Det var samme løsning jeg kom frem til i eftermiddags.

Rart at få bekræftet fremgangsmåden var rigtig.

Vil du lægge et svar og kan du fortælle mig om man kan tilføje formattering når man saver så linierne ikke skrives ud i et?
Avatar billede bak Forsker
08. maj 2005 - 20:02 #6
godt vi er enige :-)
Hvis du ser den gemte fil i notepad er der skrevet ud i et, men hvis du vælger at se filen i en browser er strukturen helt anderledes. Her kan du se hver linie og både kollapse emnerne og expande dem.
ex._

  <?xml version="1.0" encoding="UTF-8" ?>
- <Root>
- <Product>
  <Navn>Navn1</Navn>
- <Type>
  <ID>Id1</ID>
  <Orig>Origin1</Orig>
  </Type>
  </Product>
- <Product>
  <Navn>Navn2</Navn>
- <Type>
  <ID>Id2</ID>
  <Orig>Origin2</Orig>
  </Type>
  </Product>
- <Product>
Avatar billede brynil Nybegynder
08. maj 2005 - 20:13 #7
Ja, men det var netop udseendet i f.x. notepad jeg var nysgerrig efter.

Men tak for indsatsen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester