Avatar billede avest Nybegynder
03. december 2003 - 12:58 Der er 2 kommentarer og
1 løsning

XML import

Jeg skal udveksle data mellem to systemer og tænkte at XML var det rigtige at benytte istedet for en ;-separeret fil. SÅ kan jeg erhverve mig lidt viden om XML undervejs.

Som altid så lad os tage udgangspunkt i en adressebog.

<?xml version="1.0" encoding="ISO-8859-1" ?>
<ADRESSEBOG>
<KORT>
<NAVN type="Person">Jens Jensen</NAVN>
<ADR>Nørregade 2</ADR>
</KORT>
<KORT>
<NAVN type="Person">Hans Hansen</NAVN>
<ADR>Søndergade 34</ADR>
</KORT>
<KORT>
<NAVN type="firma">IT ekspertene A/S</NAVN>
<ADR>Søndergade 23</ADR>
</KORT>
</ADRESSEBOG>

Hvordan får jeg den hentet ind i Notesdatabasen som tre dokumenter. Hvis jeg skal programmere en agent som kan gøre dette kan det jo tage lang tid.
Avatar billede jogii Nybegynder
03. december 2003 - 21:55 #1
Det er ikke helt nemt at hente disse data ind i Notes. Data skal parsen og via LotusScript aflæses og dokumenterne oprettes. Jeg har desværre stadig ikke arbejdet med Noets indbyggede XML-fortolker, men kun med MS XML fortolkeren.

der oprettes et object i LS af xml-fortolkertypen, og dette object sættes til at fortolke den udpegede xml-kilde (fil på disk eller url).

Jeg har noget kode et  eller andet sted, men kan ikke finde det lige nu, men måske har du fået lidt info du kan bruge.
//Jörg
Avatar billede avest Nybegynder
04. december 2003 - 12:02 #2
Det lykkedes mig at hente det ind i en pæn træ struktur, som jeg så kan løbe igennem. Ikke noget rukursivt her, men håber det giver lidt hjælp til andre.

Sub Initialize
  Dim objXML As Variant
  Set objXML = CreateObject("Microsoft.XMLDOM")
  'Set objXML = CreateObject("Msxml2.DOMDocument40")  virkede ikke

  objXML.async = False
  objXML.Load("os2000.xml") 'Hent filnavn
  If (objXML.parseerror.line <> 0) Then
    Messagebox "Linie: " + objXML.parseerror.line + Chr(10) + objXML.parseerror.reason , 0 , "Parse-error"
  Else
    Messagebox objXML.documentElement.nodename, 0 , "TopNode: "
 
    Forall x In objXML.documentElement.childNodes
   
      'nyt dokument kan oprettes her

      Messagebox x.nodename + " : " + x.text , 0 , "X Node: " + x.nodetype

      Forall y In x.childNodes
        ' felter til dokumentet kan dannes her
        Messagebox y.nodename + " : " + y.text , 0 , "Y Node: " + y.nodetype

      End Forall
    End Forall
  End If
Avatar billede avest Nybegynder
04. december 2003 - 12:03 #3
Min xml test fil ser sådan ud:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE posteringer [
  <!ELEMENT posteringer (konto*)>
  <!ELEMENT konto (postering*)>
  <!ATTLIST konto nr CDATA #REQUIRED>

  <!ELEMENT postering  (bogfdat,netbelob,cprnr)>
  <!ELEMENT bogfdat        (#PCDATA)>
  <!ELEMENT netbelob      (#PCDATA)>
  <!ELEMENT cprnr      (#PCDATA)>
]>

<posteringer>
<konto nr="76767">
<postering><bogfdat>18-03-2003</bogfdat><netbelob>21</netbelob><cprnr>0905651846</cprnr></postering>
<postering><bogfdat>04-05-2003</bogfdat><netbelob>23523,90</netbelob><cprnr>0905651846</cprnr></postering>
<postering><bogfdat>11-07-2003</bogfdat><netbelob>1723,90</netbelob><cprnr>0905651846</cprnr></postering>
</konto>
<konto nr="676776">
<postering><bogfdat>18-03-2003</bogfdat><netbelob>27523,90</netbelob><cprnr>0905651846</cprnr></postering>
<postering><bogfdat>04-05-2003</bogfdat><netbelob>23523,90</netbelob><cprnr>0905651846</cprnr></postering>
<postering><bogfdat>11-07-2003</bogfdat><netbelob>1723,90</netbelob><cprnr>0905651846</cprnr></postering>
</konto>
</posteringer>
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
Computerworld tilbyder specialiserede kurser i database-management

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