Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


MSXML

Postades av 2004-09-13 17:31:59 - Mikael Gustavsson, i forum visual basic - allmänt, Tråden har 12 Kommentarer och lästs av 1378 personer

Jag behöver extrahera ut data från ett xml-dokument.
XML-dokumentet ligger i ett fält i en tabell i en sql-server, dvs xml-dokumentet kommer att finnas i en variabel efter det att jag hämtat datat i sql-servern.
Jag vill ha ut datat i visst/vissa xml-element.
Jag antar att jag ska använda msxml3.dll
(jag kör access 2000).
Någon som har exempel/kod för hur jag tar ut xml-elementens data?
Dvs hur jag hanterar msxml.dll i access 2k.

Xml-datat ligger med flera nivåer, och ev med attribut i start-taggarna,
dvs ganska komplexa xml-dokument.

/ Mikael


Ska försöka förtydliga mig lite.
Jag vill i en array lagra hela xml-datat.
XML-datat finns i en variabel.
Jag vill loopa igenom alla taggar, och lägga alla taggar med data i arrayen.
Detta för att senare kunna hämta data ur arrayen för vidare behandling.

Mao söker jag koden i VB (access2k) för att loopa igenom ett xml-dokument (ligger i en variabel), och lägga alla taggar i en kolumn i arrayen, och alla data i nästa kolumn.

Blev det mer lättförståligt?

Det jag behöver är antagligen lite info om hur msxml.dll fungerar.

/ Mikael


Svara

Sv: MSXML

Postades av 2004-09-13 23:11:31 - Pelle Johansson

Jag tror du kan använda dig av en liknande lösning jag skrev i asp.net för språkstöd. Jag laddar in filen i minnet och söker ur den. Kolla på www.pellesoft.se/informator


Svara

Sv: MSXML

Postades av 2004-09-14 08:38:52 - Mikael Gustavsson

Jag fattar inte detta riktigt.
Jag vet alltså inte vilka taggar/element som finns i xmldoc.
(Jag kan därför inte söka efter visst element, och hämta dess värde).

Men jag vill ha ut alla taggar inkl attribut och elementdata i en array.
Förslagsvis en array med tre kolumner.
a: Element
b: Elementdata
c: Attribut
(Kanske inte rätt benämningar på delarna)

ex:

<kund foretag="AB1">
<kontakter>
<kont>
<namn>Sture</namn>
<tel>08-1234567898</tel>
</kont>
<kont>
<namn>Stina</namn>
<tel>031-123456</tel>
</kont>
</kontakter>
</kund>

Skall ge följande i arrayen
1a: "/kund/kontakter/kont1/namn"
1b: "Sture"
1c: "foretag=AB1"
2a: "/kund/kontakter/kont1/tel"
2b: "08-123456789"
2c: "foretag=AB1"
3a: "/kund/kontakter/kont2/namn"
3b: "Stina"
3c: "foretag=AB1"
4a: "/kund/kontakter/kont2/tel"
4b: "031-123456"
4c: "foretag=AB1"


Är jag helt ute och snurrar?
Det handlar alltså om datautbyte mellan två system. (har inte alls med websidor/weblayout att göra).
Jag vill ta ut allt data ur ett xmldokument, för vidare bearbetning.
Min idé bygger på att lägga all data i en array, någon som har en bättre idé?
Jag kan direkt se en brist i mitt exempel ovan.
Om taggen tel skulle ha ett attribut som är "typ", skulle mitt förslag inte fungera.
Dvs <tel typ="mobil">031-123456</tel>

/ Mikael


Svara

Sv: MSXML

Postades av 2004-09-14 21:41:54 - Mikael Gustavsson

Jag har nu hittat hur man ser om ett element har attribut.
Även hittat hur man hämtar datat för ett visst attribut.
MEN, finns det något sätt att se VILKA attribut som ett element ev har?

/ Mikael


Svara

Sv: MSXML

Postades av 2004-09-15 09:07:45 - Martin Adrian

Kanske följande lilla program kan hjälpa dig.
<code>
Sub PrintElement(ByVal prefix As String, ByVal root As IXMLDOMNode)
Dim attr As IXMLDOMNode, node As IXMLDOMNode
For Each node In root.childNodes
Select Case node.nodeType
Case NODE_ELEMENT
Debug.Print "Element: " & prefix & node.nodeName
For Each attr In node.Attributes
Debug.Print "attr: " & attr.nodeName & "=" & attr.nodeValue
Next
PrintElement prefix & node.nodeName & "/", node
Case NODE_TEXT
Debug.Print "Text: " & node.nodeValue
End Select
Next

End Sub

Sub Import()
Dim dom As New MSXML2.DOMDocument40
Set dom = New MSXML2.DOMDocument40 ' vet inte riktigt varför denna rad behövs
dom.async = False
dom.validateOnParse = False
dom.resolveExternals = False
dom.preserveWhiteSpace = True
dom.loadXML variabelMedXML
PrintElement "", dom.documentElement
End Sub
</code>


Svara

Sv: MSXML

Postades av 2004-09-15 10:56:48 - Oskar Johansson

>Dim dom As New MSXML2.DOMDocument40
>Set dom = New MSXML2.DOMDocument40 ' vet inte riktigt varför denna rad behövs

Rad ett deklarerar en variabel av typen MSXML2.DOMDocument40 samt skapar en instans av typen MSXML2.DOMDocument40.
Rad två "skriver över" innehållet i variabeln med en ny instans av typen MSXML2.DOMDocument40.

Förslagsvis tar du bort nyckelordet New på första raden så att du bara deklarerar där. Det är rätt bra att inte skapa objekt på samma rad som deklarationen då det är enklare att felsöka med t.ex. vs.net eller liknande.


Svara

Sv: MSXML

Postades av 2004-09-15 11:08:49 - Martin Adrian

>Rad ett deklarerar en variabel av typen MSXML2.DOMDocument40 samt skapar en instans av typen
>MSXML2.DOMDocument40.
>Rad två "skriver över" innehållet i variabeln med en ny instans av typen MSXML2.DOMDocument40.

Det var vad jag trodde men det konstiga är att jag ibland (?) får felmeddelande "object does not exist" på nästa rad om jag inte har rad2.


Svara

Sv: MSXML

Postades av 2004-09-15 23:12:08 - Ola Lindfeldt

Vad är det du egentligen vill göra? Vad ska du göra med dessa arrayer?

Jag tror du vill ha det till arrayer bara för att du förstår arrayer lite bättre än vad du förstår DOM
(Document Object Model). Kan det stämma? :)

Lär dig det i stället, så kommer du snart glömma dina gamla arrayer..

Ola


Svara

Sv: MSXML

Postades av 2004-09-21 20:46:33 - Mikael Gustavsson

Helt rätt.
Arrayen tillkom pga bristande kunskap om DOM.
Nu har det hela klarnat en del.
Arrayen är borta.

Jag har nu nästa problem att hantera.

Den XML jag skall läsa ligger som text i en tabell i en SQL-server.
Den är med teckenuppsättning UTF-8.

Jag vill ha ut datat ur elementen i ISO 8859-1.

Någon som har kod eller likn för att konvertera UTF-8 till ISO 8859-1?

I nästa skede ska jag även skapa XML.
Då måste jag konvertera från ISO 8859-1 till UTF-8.

Dvs kod eller liknende (dll?) för konvertering åt båda håll önskas.

/ Mikael


Svara

Sv: MSXML

Postades av 2004-09-21 21:30:01 - Martin Adrian

Varför spelar teckenupsättningen någon roll?

Hela iden med XML är väl att man kan använda vilken teckenuppsättning man vill bara man anger i filen vilken det är.

MSXML interfacet använder alltid unicode och konverterar XML filen åt dig när det behövs (i båda riktningarna).

Om de data du har är 8859-1 finns det väl ingen anledning att skapa en XML fil med UTF-8?


Svara

Sv: MSXML

Postades av 2004-09-21 22:05:24 - Mikael Gustavsson

I den data som jag har i min sql-databas står det exvis
<Name>700 - N=C3=A4tanalys</Name>
Dvs 700 - Nätanalys
Om jag hämtar tagginnehållet med msxml.dll:s DOM blir resultatet
<Name>700 - N=C3=A4tanalys</Name>
Dvs ingen konvertering till 8859 sker.
Vad gör jag för fel??

Menar du att det i xml-datat skall framgå vilken teckenuppsättning det är?
Det står ingenstans i xml-filen (det är egentligen ingen fil, det är ju text i en tabell).

/ Mikael


Svara

Sv: MSXML

Postades av 2004-09-21 23:31:26 - Martin Adrian

Här står hur det fungerar: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxml/html/xmlencodings.asp

Ditt problem verkar dock ligga på en annan nivå.

Databasinterface via t.ex. ADO är alltid i unicode (BSTR). Det som har hänt i det här fallet är nog att windows tror att databasen är i 8859-1 och har således gjort en felaktig konvertering från 8859-1 -> unicode istället för UTF8->unicode. Har ingen aning om hur man får ADO att förstå att data i databasen är i UTF8.

Att göra konverteing efteråt blir extra komplicerat eftersom du inte längre har utf-8 data utan unicode. Du måste således först konvertera tillbaka till 8859-1 och sen göra en korrekt kovertering utf-8 till unicode. Troligen kan du använda WideCharToMultiByte funktionen men jag vet inte hur man använder den från VB.


Svara

Sv: MSXML

Postades av 2004-09-27 13:51:36 - Mikael Gustavsson

Detta kanske borde vara en ny tråd i forumet.
Men jag lägger det här i alla fall beroende på att det hör ihop med tidigare inlägg.

Jag vill skapa xmldata.
Datat skall läggas i min sql-server fvb till en B2B-applikation.
Dvs det handlar INTE om att nyttja XML för websidor eller likande.

Hur kan jag nyttja msxml.dll för att skapa detta xmldata?

Jag har tidigare testat detta mha SoapSerializer30 i en w2k-maskin. (blev aldrig klart).
Nu kör jag på w2k3-server.
Detta innebär att soap30 inte längre finns/behövs.

Vad används i w2k3?
Hur?
Rätt teckenuppsättning på utdatat (UTF8)!

/ Mikael


Fel av mig.
Soap30 fanns visst med för w2k3.

/ Mikael


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 710
27 958
271 751
544
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies