View Full Version : MSXML3 parser....
mrblonde
2001-10-29, 10:43
Har precis insett att jag jobbat med en förgammal version av msxml parser (v1) och installerat v3 samt sp1 till v3 (vågade mig inte riktigt på v4, den verkar vara nysläppt/i något slags beta stadie).
Hur som helst så använder jag encoding ISO-8859-1, vilket skall om jag fattat saken rätt stödja åäö. Jag kan inte byta encoding för det är vår partner företag som bestämmer vilken vi skall ha.
Att jag bytte från v1 av MSXML pasern till v3 var för att v1 inte verkade stödja åäö men det skulle v3 göra (med den encodingen som vi har).
Nu kan jag plötsligt inte skapa ett DOMDocument i min kod längre. Har lagt till referensen för Microsoft XML, v3.0
men det funkar inte att göra create object. Det var en lång bakgrund, men det är med för att... ja vet inte riktigt, ökad förståelse för vad jag gör :)
Dim msg As MSXML2.DOMDocument30
Set msg = CreateObject("MSXML2.DOMDocument30")
Vad gör jag för fel :(
stavar rejält kass
Skrev fel i mitt kod exempel
------------------
National Blonde Day! (http://www.mgm.com/nationalblondeday/)
Alle ihre Basis ist uns gehört.
[Redigerat av mrblonde den 29 okt 2001]
[Redigerat av mrblonde den 29 okt 2001]
Varför MSXML2.DOMDocument30 icke fungerar har jag ingen aning om. Prova med MSXML2.DOMDocument istället.
Mvh,
------------------
All your base are belong to me.
mrblonde
2001-10-29, 11:39
redan provat det...funkade inte det heller
aha!
nu får jag ett nytt felmeddelande:
Automation error
A dynamic link library (DLL) initialization routine failed.
Hmm.. kan det blivit nått fel vid installationen av parsern...
------------------
National Blonde Day! (http://www.mgm.com/nationalblondeday/)
Alle ihre Basis ist uns gehört.
Om du gör en Server.CreateObject från ASP, fungerar det då?
------------------
All your base are belong to me.
mrblonde
2001-10-29, 11:58
hmm...nej.
Måste betyda att installationen blivit fel på nått sätt.
Underligt att man kan lägga till den som referens, och att den dyker upp i autocopleaten i vb..
hur fasen avinstallerar jag den dll:en då... x(
------------------
National Blonde Day! (http://www.mgm.com/nationalblondeday/)
Alle ihre Basis ist uns gehört.
Det verkar inte bättre. Jag tror att du ska installera om msxml3 sp1.
Med tanke på hur instabil 3:an var när den var beta så dröjer det nog länge innan jag installerar 4:an.
Mvh,
------------------
All your base are belong to me.
mrblonde
2001-10-29, 12:05
@anders, skall man använda de classer som slutar på 30 t ex IXMLHTTP30 för v3 eller skall man använda de utan?
dvs, DOMDocument eller DOMDocument30?
Är lite förvirrad över alla val som finns.
------------------
National Blonde Day! (http://www.mgm.com/nationalblondeday/)
Alle ihre Basis ist uns gehört.
mrblonde
2001-10-29, 12:10
installerat om, men funkar inte ändå.
suck...
och inget svar får man i
microsoft.public.xml.msxml-webrelease
newsgroupen...
Aaaaaaargh!
------------------
National Blonde Day! (http://www.mgm.com/nationalblondeday/)
Alle ihre Basis ist uns gehört.
Jag har alltid använt de utan 30.
Hur installerade du parsern? I replace eller side-by-side mode?
När skiter det sig, är det direkt när du försöker skapa en instans av objektet?
Mvh,
------------------
All your base are belong to me.
mrblonde
2001-10-29, 12:30
jag fick aldrig välja vad jag kan komma ihåg, men jag tror det är side-by-side, för jag kan fortfarande referera till den äldre versionen.
När jag steppar så är det på Set msg = CreateObject("MSXML2.DOMDocument") som den hoppar ur...
Jag har provat med dim msg as new MSXML2.DOMDocument30 med, men det ger samma fel.
Och jag har provat utan "30" med, men det ger samma fel.
(det hela är mycket irriterande eftersom jag har massor av kod som funkade innan jag uppdaterade parsen)
------------------
National Blonde Day! (http://www.mgm.com/nationalblondeday/)
Alle ihre Basis ist uns gehört.
Tänkte bara meddela att Microsoft har ju släppt en MSXML Parser 3 SP2 också, som endast kan installeras i replace-mode... Du kanske skulle testa den? :q
------------------
SPiN, bjorne.w@telia.com
-- Tekniska framsteg är som en yxa i händerna på en kriminell galning / Albert Einstein --
mrblonde
2001-10-29, 13:24
ja det låter som en idé, men jag kan inte hitta någon referens till den på msdn, de länkar till sp1....
...kan man installera om parsern v3 i replacemode...?
Äh, jag provar.
------------------
National Blonde Day! (http://www.mgm.com/nationalblondeday/)
Alle ihre Basis ist uns gehört.
mrblonde
2001-10-29, 13:41
Note, however, that running MSXML 3.0 in Replace mode can leave your computer in an unstable state.
MSDN download MSXML parser 3.0 release (http://www.msdn.microsoft.com/downloads/default.asp?URL=/downloads/sample.asp?url=/msdn-files/027/001/596/msdncompositedoc.xml)
Vet inte om jag vill installera i replace mode...
------------------
National Blonde Day! (http://www.mgm.com/nationalblondeday/)
Alle ihre Basis ist uns gehört.
Klart du kan installera SP1 i replace-mode, det har @nders visat mig hur man gör! :D
Annars hittar du SP2 här (http://msdn.microsoft.com/downloads/sample.asp?url=/MSDN-FILES/027/001/772/msdncompositedoc.xml).
------------------
SPiN, bjorne.w@telia.com
-- Tekniska framsteg är som en yxa i händerna på en kriminell galning / Albert Einstein --
mrblonde
2001-10-29, 14:24
hmm fick precis reda på att jag skall skriva min createobject så här:
Set msg = CreateObject("Msxml2.DOMDocument.3.0")
Men det funkar inte heller...
------------------
National Blonde Day! (http://www.mgm.com/nationalblondeday/)
Alle ihre Basis ist uns gehört.
mrblonde
2001-10-29, 14:28
men nu funkar det!!!!
Stoppade in sp2 och nu funkar allt som det skall!!!!
Är så choklaaaaaaaaaaad!
Tack tack tack för all er hjälp.
------------------
National Blonde Day! (http://www.mgm.com/nationalblondeday/)
Alle ihre Basis ist uns gehört.
Set msg = CreateObject("Msxml2.DOMDocument.3.0")
Funkade det med det där? :q :q
------------------
SPiN, bjorne.w@telia.com
-- Tekniska framsteg är som en yxa i händerna på en kriminell galning / Albert Einstein --
mrblonde
2001-10-29, 14:45
ja.
det är faktiskt så det skall vara om jag fattat det rätt enligt ett svar jag fick på microsoft.public.xml
Och det funkar finfint. :e
------------------
National Blonde Day! (http://www.mgm.com/nationalblondeday/)
Alle ihre Basis ist uns gehört.
mrblonde
2001-10-29, 14:48
det rista är att jag fortfarande får fel när jag försöker ladda xml svaret från vårt partnerföretag trots att v3 skall stödja den encoding som är specificerat i början på deras svar (ISO-8859-1) Den byter ut "ä" och de nästkommande två tecknen mot "?" och sen går det inte att göra msg.loadxml (får:An Invalid character was found in text content. )
MYCKET STÖRANDE, eftersom jag nu är tillbaka på ruta ett. Trodde bytet av parser skulle lösa det (åöä) problemet...
------------------
National Blonde Day! (http://www.mgm.com/nationalblondeday/)
Alle ihre Basis ist uns gehört.
Hmm, i text-content? Alltså inte i elementnamnen? Jag kan läsa XML med å, ä och ö i har jag för mig... Bara det inte är i elementnamnen, utan som värde.
------------------
SPiN, bjorne.w@telia.com
-- Tekniska framsteg är som en yxa i händerna på en kriminell galning / Albert Einstein --
mrblonde
2001-10-29, 15:12
det är åäö i Value som inte funkar, i elementnamnen finns inget sånt (hua! hemska tanke)
Ex:
<DATA>
<Name Value="John"/>
<Adress Value="Järnvägsgatan"/>
</DATA>
Den här raden blir då:
<Adress Value="J?v?gatan"/>
och sen går det inte att göra msg.loadxml
Det underliga är att de hävdar att de returnerar <?xml version="1.0" encoding="ISO-8859-1" ?> först (och på deras testsite gör de det) men om jag läser av .responseText så står det inget alls förutom svaret. Skall det vara så? Tas xml huvudet bort i responseText?
I vilken propertiy kan man hitta det annars, jag letar och letra på alla methods som finns på msdn under domdocument och på vad intelisensen säger, men hittar inget som ger mig svar på det.
------------------
National Blonde Day! (http://www.mgm.com/nationalblondeday/)
Alle ihre Basis ist uns gehört.
Hmm, det finns nåt som heter processingInstruction som du skriver encodingen till dokumentet genom, men jag vet inte om den skriver över aktuell, eller kan ta bort.
När man sätter en processingInstruction gör jag så här, ivf:
Dim objPI As MSXML2.IXMLDOMProcessingInstruction
set objPI = dittXMLobjektHär.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")
dittXMLobjektHär.insertBefore objPI, dittXMLobjektHär.childNodes(0)
set objPI = Nothing
Istället för att ha med ett value-attribut, kan inte informationen lagras i taggarna?
<DATA>
<Name>John</Name>
<Adress>Järnvägsgatan</Adress>
</DATA>
:q
------------------
SPiN, bjorne.w@telia.com
-- Tekniska framsteg är som en yxa i händerna på en kriminell galning / Albert Einstein --
mrblonde
2001-10-29, 15:42
det är inte jag som bestämmer hur retur xml:en är formatterad, det görs på ett annat företag.
Jag bara tar emot, men det verkar som att de glömde tala om att jag själv skulle sända med encoding för att få rätt på det.
Så det verkar löst nu.
------------------
National Blonde Day! (http://www.mgm.com/nationalblondeday/)
Alle ihre Basis ist uns gehört.
vBulletin® v3.8.6, Copyright ©2000-2013, Jelsoft Enterprises Ltd.