Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97. J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères de codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouver la fonction HTMLdecode (ou équivalent) qui me transforme les
"<" en "<", entre autres ? Si je me souviens bien, cette fonction
est native dans ASP , et elle est prévue dans Longhorn (voir URL ci
dessous), mais ici je ne suis pas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre,
et je découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97. J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères de codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouver la fonction HTMLdecode (ou équivalent) qui me transforme les
"<" en "<", entre autres ? Si je me souviens bien, cette fonction
est native dans ASP , et elle est prévue dans Longhorn (voir URL ci
dessous), mais ici je ne suis pas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre,
et je découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97. J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères de codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouver la fonction HTMLdecode (ou équivalent) qui me transforme les
"<" en "<", entre autres ? Si je me souviens bien, cette fonction
est native dans ASP , et elle est prévue dans Longhorn (voir URL ci
dessous), mais ici je ne suis pas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre,
et je découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Bonjour/soir,
Je te conseille d'utiliser une référence Microsoft XML.
Voici un bout de code se basant sur Microsoft XML:
'Pour plus d'informations sur le DOM:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/dom_devguide_overview_2g
1j.asp
Dim Document As MSXML.DOMDocument
Set Document = New MSXML.DOMDocument
'Les opérations seront synchrones
Document.async = False
'on charge le document
If Document.Load("http://www.unsiteparmistantdautresurlenet.fr/test.xml")
Then
Dim NodeList As MSXML.IXMLDOMNodeList, i As Long
'Retrouve tous les noeux elementsuivant sous elemetentpremier
contenant
au moins un element date
'Pour plus d'informations sur XPath:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/xpath_syntax1_0fjs.asp
Set NodeList > Document.selectNodes("elemetentpremier/elementsuivant[date]")
'On a retrouvé des éléments
If Not NodeList Is Nothing Then
For i = 0 To ChildNodeList.length - 1
'Affiche la date contenue dans l'élément date
Debug.Print ChildNodeList(i).selectSingleNode("date").text
Next i
End If
End If
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" a écrit dans le message de
news:btq108$1nn$Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97. J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères de codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouver la fonction HTMLdecode (ou équivalent) qui me transforme les
"<" en "<", entre autres ? Si je me souviens bien, cette fonction
est native dans ASP , et elle est prévue dans Longhorn (voir URL ci
dessous), mais ici je ne suis pas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre,
et je découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Bonjour/soir,
Je te conseille d'utiliser une référence Microsoft XML.
Voici un bout de code se basant sur Microsoft XML:
'Pour plus d'informations sur le DOM:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/dom_devguide_overview_2g
1j.asp
Dim Document As MSXML.DOMDocument
Set Document = New MSXML.DOMDocument
'Les opérations seront synchrones
Document.async = False
'on charge le document
If Document.Load("http://www.unsiteparmistantdautresurlenet.fr/test.xml")
Then
Dim NodeList As MSXML.IXMLDOMNodeList, i As Long
'Retrouve tous les noeux elementsuivant sous elemetentpremier
contenant
au moins un element date
'Pour plus d'informations sur XPath:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/xpath_syntax1_0fjs.asp
Set NodeList > Document.selectNodes("elemetentpremier/elementsuivant[date]")
'On a retrouvé des éléments
If Not NodeList Is Nothing Then
For i = 0 To ChildNodeList.length - 1
'Affiche la date contenue dans l'élément date
Debug.Print ChildNodeList(i).selectSingleNode("date").text
Next i
End If
End If
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" <pub.removeme@delrieu.org> a écrit dans le message de
news:btq108$1nn$1@titan.btinternet.com
Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97. J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères de codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouver la fonction HTMLdecode (ou équivalent) qui me transforme les
"<" en "<", entre autres ? Si je me souviens bien, cette fonction
est native dans ASP , et elle est prévue dans Longhorn (voir URL ci
dessous), mais ici je ne suis pas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre,
et je découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Bonjour/soir,
Je te conseille d'utiliser une référence Microsoft XML.
Voici un bout de code se basant sur Microsoft XML:
'Pour plus d'informations sur le DOM:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/dom_devguide_overview_2g
1j.asp
Dim Document As MSXML.DOMDocument
Set Document = New MSXML.DOMDocument
'Les opérations seront synchrones
Document.async = False
'on charge le document
If Document.Load("http://www.unsiteparmistantdautresurlenet.fr/test.xml")
Then
Dim NodeList As MSXML.IXMLDOMNodeList, i As Long
'Retrouve tous les noeux elementsuivant sous elemetentpremier
contenant
au moins un element date
'Pour plus d'informations sur XPath:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/xpath_syntax1_0fjs.asp
Set NodeList > Document.selectNodes("elemetentpremier/elementsuivant[date]")
'On a retrouvé des éléments
If Not NodeList Is Nothing Then
For i = 0 To ChildNodeList.length - 1
'Affiche la date contenue dans l'élément date
Debug.Print ChildNodeList(i).selectSingleNode("date").text
Next i
End If
End If
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" a écrit dans le message de
news:btq108$1nn$Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97. J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères de codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouver la fonction HTMLdecode (ou équivalent) qui me transforme les
"<" en "<", entre autres ? Si je me souviens bien, cette fonction
est native dans ASP , et elle est prévue dans Longhorn (voir URL ci
dessous), mais ici je ne suis pas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre,
et je découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Merci François, mais j'utilise déjà le genre de code que tu
mentionne. Je n'ai probablement pas été très clair dans mon premier
mail. Je reprends :
Je capture une page web avec un code du genre (j'ai appellé la
function dumpURL):
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
la chaine de caractère que j'obtient (sDump) est de ce style :
<html>....
<body> ... blabla...
<pre>
...
<Date-std_year>2003</Date-std_year>
...
</pre>
...blabla....
</body>
</html>
Les données XML sont entre les tags <pre>. Avant de traiter ces
données avec les fonction MSXML il faut absolument decoder les ">"
en >. J'ai crée une fonction maison qui fait ça. Schématiquement, le
code ressemble à :
sURL >
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
sDump = dumpUrl(sURL)
sDump = FonctionQuiExtraitLaChaineEntreLesTagsPre(sDump)
sDump = HTMLdecode(sDump)
domdoc.loadXML(sDump)
puis gestions des Nodes comme tu le propose, etc...
Je suis juste à la recherche d'une fonction HTMLdecode 'propre' et
rapide, probablement déjà proposé dans une référence dll.
Merci,
Olivier.
"François Picalausa" a écrit dans le message de
news:Bonjour/soir,
Je te conseille d'utiliser une référence Microsoft XML.
Voici un bout de code se basant sur Microsoft XML:
'Pour plus d'informations sur le DOM:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/dom_devguide_overview_2g
1j.asp
Dim Document As MSXML.DOMDocument
Set Document = New MSXML.DOMDocument
'Les opérations seront synchrones
Document.async = False
'on charge le document
If
Document.Load("http://www.unsiteparmistantdautresurlenet.fr/test.xml")
Then Dim NodeList As MSXML.IXMLDOMNodeList, i As Long
'Retrouve tous les noeux elementsuivant sous elemetentpremier
contenant au moins un element date
'Pour plus d'informations sur XPath:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/xpath_syntax1_0fjs.asp
Set NodeList >> Document.selectNodes("elemetentpremier/elementsuivant[date]")
'On a retrouvé des éléments
If Not NodeList Is Nothing Then
For i = 0 To ChildNodeList.length - 1
'Affiche la date contenue dans l'élément date
Debug.Print
ChildNodeList(i).selectSingleNode("date").text Next i
End If
End If
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" a écrit dans le message
de news:btq108$1nn$Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97. J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères de codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouver la fonction HTMLdecode (ou équivalent) qui me transforme les
"<" en "<", entre autres ? Si je me souviens bien, cette fonction
est native dans ASP , et elle est prévue dans Longhorn (voir URL ci
dessous), mais ici je ne suis pas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre,
et je découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Merci François, mais j'utilise déjà le genre de code que tu
mentionne. Je n'ai probablement pas été très clair dans mon premier
mail. Je reprends :
Je capture une page web avec un code du genre (j'ai appellé la
function dumpURL):
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
la chaine de caractère que j'obtient (sDump) est de ce style :
<html>....
<body> ... blabla...
<pre>
...
<Date-std_year>2003</Date-std_year>
...
</pre>
...blabla....
</body>
</html>
Les données XML sont entre les tags <pre>. Avant de traiter ces
données avec les fonction MSXML il faut absolument decoder les ">"
en >. J'ai crée une fonction maison qui fait ça. Schématiquement, le
code ressemble à :
sURL >
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
sDump = dumpUrl(sURL)
sDump = FonctionQuiExtraitLaChaineEntreLesTagsPre(sDump)
sDump = HTMLdecode(sDump)
domdoc.loadXML(sDump)
puis gestions des Nodes comme tu le propose, etc...
Je suis juste à la recherche d'une fonction HTMLdecode 'propre' et
rapide, probablement déjà proposé dans une référence dll.
Merci,
Olivier.
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de
news:e5AzVNC2DHA.3496@TK2MSFTNGP11.phx.gbl...
Bonjour/soir,
Je te conseille d'utiliser une référence Microsoft XML.
Voici un bout de code se basant sur Microsoft XML:
'Pour plus d'informations sur le DOM:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/dom_devguide_overview_2g
1j.asp
Dim Document As MSXML.DOMDocument
Set Document = New MSXML.DOMDocument
'Les opérations seront synchrones
Document.async = False
'on charge le document
If
Document.Load("http://www.unsiteparmistantdautresurlenet.fr/test.xml")
Then Dim NodeList As MSXML.IXMLDOMNodeList, i As Long
'Retrouve tous les noeux elementsuivant sous elemetentpremier
contenant au moins un element date
'Pour plus d'informations sur XPath:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/xpath_syntax1_0fjs.asp
Set NodeList >> Document.selectNodes("elemetentpremier/elementsuivant[date]")
'On a retrouvé des éléments
If Not NodeList Is Nothing Then
For i = 0 To ChildNodeList.length - 1
'Affiche la date contenue dans l'élément date
Debug.Print
ChildNodeList(i).selectSingleNode("date").text Next i
End If
End If
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" <pub.removeme@delrieu.org> a écrit dans le message
de news:btq108$1nn$1@titan.btinternet.com
Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97. J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères de codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouver la fonction HTMLdecode (ou équivalent) qui me transforme les
"<" en "<", entre autres ? Si je me souviens bien, cette fonction
est native dans ASP , et elle est prévue dans Longhorn (voir URL ci
dessous), mais ici je ne suis pas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre,
et je découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Merci François, mais j'utilise déjà le genre de code que tu
mentionne. Je n'ai probablement pas été très clair dans mon premier
mail. Je reprends :
Je capture une page web avec un code du genre (j'ai appellé la
function dumpURL):
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
la chaine de caractère que j'obtient (sDump) est de ce style :
<html>....
<body> ... blabla...
<pre>
...
<Date-std_year>2003</Date-std_year>
...
</pre>
...blabla....
</body>
</html>
Les données XML sont entre les tags <pre>. Avant de traiter ces
données avec les fonction MSXML il faut absolument decoder les ">"
en >. J'ai crée une fonction maison qui fait ça. Schématiquement, le
code ressemble à :
sURL >
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
sDump = dumpUrl(sURL)
sDump = FonctionQuiExtraitLaChaineEntreLesTagsPre(sDump)
sDump = HTMLdecode(sDump)
domdoc.loadXML(sDump)
puis gestions des Nodes comme tu le propose, etc...
Je suis juste à la recherche d'une fonction HTMLdecode 'propre' et
rapide, probablement déjà proposé dans une référence dll.
Merci,
Olivier.
"François Picalausa" a écrit dans le message de
news:Bonjour/soir,
Je te conseille d'utiliser une référence Microsoft XML.
Voici un bout de code se basant sur Microsoft XML:
'Pour plus d'informations sur le DOM:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/dom_devguide_overview_2g
1j.asp
Dim Document As MSXML.DOMDocument
Set Document = New MSXML.DOMDocument
'Les opérations seront synchrones
Document.async = False
'on charge le document
If
Document.Load("http://www.unsiteparmistantdautresurlenet.fr/test.xml")
Then Dim NodeList As MSXML.IXMLDOMNodeList, i As Long
'Retrouve tous les noeux elementsuivant sous elemetentpremier
contenant au moins un element date
'Pour plus d'informations sur XPath:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/xpath_syntax1_0fjs.asp
Set NodeList >> Document.selectNodes("elemetentpremier/elementsuivant[date]")
'On a retrouvé des éléments
If Not NodeList Is Nothing Then
For i = 0 To ChildNodeList.length - 1
'Affiche la date contenue dans l'élément date
Debug.Print
ChildNodeList(i).selectSingleNode("date").text Next i
End If
End If
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" a écrit dans le message
de news:btq108$1nn$Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97. J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères de codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouver la fonction HTMLdecode (ou équivalent) qui me transforme les
"<" en "<", entre autres ? Si je me souviens bien, cette fonction
est native dans ASP , et elle est prévue dans Longhorn (voir URL ci
dessous), mais ici je ne suis pas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre,
et je découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Bonjour/soir,
Il est possible d'utiliser InternetExplorer comme ceci:
Option Explicit
Private WithEvents IEBrowser As InternetExplorer
Private Sub Command1_Click()
IEBrowser.Navigate
"http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML
&list_uidst42"
End Sub
Private Sub Form_Initialize()
Set IEBrowser = New InternetExplorer
End Sub
Private Sub Form_Terminate()
Set IEBrowser = Nothing
End Sub
Private Sub IEBrowser_DocumentComplete(ByVal pDisp As Object, URL As
Variant)
Dim XMLContent As String, PreElement As Object
Dim Document As DOMDocument
Set PreElement = IEBrowser.Document.getElementsByTagName("pre")(0)
If Not PreElement Is Nothing Then
XMLContent = PreElement.innerText
XMLContent = Replace$(XMLContent, "<!DOCTYPE Entrezgene PUBLIC
""-//NCBI//NCBI Entrezgene/EN"" ""NCBI_Entrezgene.dtd"">", "")
Set Document = New DOMDocument
Document.validateOnParse = False
MsgBox Document.loadXML(XMLContent)
MsgBox Document.parseError.reason
End If
End Sub
Tu trouveras aussi la table des caractères "spéciaux" ici:
http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset1.asp
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" a écrit dans le message de
news:btreg8$p6p$Merci François, mais j'utilise déjà le genre de code que tu
mentionne. Je n'ai probablement pas été très clair dans mon premier
mail. Je reprends :
Je capture une page web avec un code du genre (j'ai appellé la
function dumpURL):
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
la chaine de caractère que j'obtient (sDump) est de ce style :
<html>....
<body> ... blabla...
<pre>
...
<Date-std_year>2003</Date-std_year>
...
</pre>
...blabla....
</body>
</html>
Les données XML sont entre les tags <pre>. Avant de traiter ces
données avec les fonction MSXML il faut absolument decoder les ">"
en >. J'ai crée une fonction maison qui fait ça. Schématiquement, le
code ressemble à :
sURL > >
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
sDump = dumpUrl(sURL)
sDump = FonctionQuiExtraitLaChaineEntreLesTagsPre(sDump)
sDump = HTMLdecode(sDump)
domdoc.loadXML(sDump)
puis gestions des Nodes comme tu le propose, etc...
Je suis juste à la recherche d'une fonction HTMLdecode 'propre' et
rapide, probablement déjà proposé dans une référence dll.
Merci,
Olivier.
"François Picalausa" a écrit dans le message de
news:Bonjour/soir,
Je te conseille d'utiliser une référence Microsoft XML.
Voici un bout de code se basant sur Microsoft XML:
'Pour plus d'informations sur le DOM:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/dom_devguide_overview_2g
1j.asp
Dim Document As MSXML.DOMDocument
Set Document = New MSXML.DOMDocument
'Les opérations seront synchrones
Document.async = False
'on charge le document
If
Document.Load("http://www.unsiteparmistantdautresurlenet.fr/test.xml")
Then Dim NodeList As MSXML.IXMLDOMNodeList, i As Long
'Retrouve tous les noeux elementsuivant sous elemetentpremier
contenant au moins un element date
'Pour plus d'informations sur XPath:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/xpath_syntax1_0fjs.aspSet NodeList > >> Document.selectNodes("elemetentpremier/elementsuivant[date]")
'On a retrouvé des éléments
If Not NodeList Is Nothing Then
For i = 0 To ChildNodeList.length - 1
'Affiche la date contenue dans l'élément date
Debug.Print
ChildNodeList(i).selectSingleNode("date").text Next i
End If
End If
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" a écrit dans le message
de news:btq108$1nn$Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97. J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères de codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouver la fonction HTMLdecode (ou équivalent) qui me transforme les
"<" en "<", entre autres ? Si je me souviens bien, cette fonction
est native dans ASP , et elle est prévue dans Longhorn (voir URL ci
dessous), mais ici je ne suis pas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre,
et je découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Bonjour/soir,
Il est possible d'utiliser InternetExplorer comme ceci:
Option Explicit
Private WithEvents IEBrowser As InternetExplorer
Private Sub Command1_Click()
IEBrowser.Navigate
"http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML
&list_uidst42"
End Sub
Private Sub Form_Initialize()
Set IEBrowser = New InternetExplorer
End Sub
Private Sub Form_Terminate()
Set IEBrowser = Nothing
End Sub
Private Sub IEBrowser_DocumentComplete(ByVal pDisp As Object, URL As
Variant)
Dim XMLContent As String, PreElement As Object
Dim Document As DOMDocument
Set PreElement = IEBrowser.Document.getElementsByTagName("pre")(0)
If Not PreElement Is Nothing Then
XMLContent = PreElement.innerText
XMLContent = Replace$(XMLContent, "<!DOCTYPE Entrezgene PUBLIC
""-//NCBI//NCBI Entrezgene/EN"" ""NCBI_Entrezgene.dtd"">", "")
Set Document = New DOMDocument
Document.validateOnParse = False
MsgBox Document.loadXML(XMLContent)
MsgBox Document.parseError.reason
End If
End Sub
Tu trouveras aussi la table des caractères "spéciaux" ici:
http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset1.asp
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" <pub.removeme@delrieu.org> a écrit dans le message de
news:btreg8$p6p$1@sparta.btinternet.com
Merci François, mais j'utilise déjà le genre de code que tu
mentionne. Je n'ai probablement pas été très clair dans mon premier
mail. Je reprends :
Je capture une page web avec un code du genre (j'ai appellé la
function dumpURL):
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
la chaine de caractère que j'obtient (sDump) est de ce style :
<html>....
<body> ... blabla...
<pre>
...
<Date-std_year>2003</Date-std_year>
...
</pre>
...blabla....
</body>
</html>
Les données XML sont entre les tags <pre>. Avant de traiter ces
données avec les fonction MSXML il faut absolument decoder les ">"
en >. J'ai crée une fonction maison qui fait ça. Schématiquement, le
code ressemble à :
sURL > >
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
sDump = dumpUrl(sURL)
sDump = FonctionQuiExtraitLaChaineEntreLesTagsPre(sDump)
sDump = HTMLdecode(sDump)
domdoc.loadXML(sDump)
puis gestions des Nodes comme tu le propose, etc...
Je suis juste à la recherche d'une fonction HTMLdecode 'propre' et
rapide, probablement déjà proposé dans une référence dll.
Merci,
Olivier.
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de
news:e5AzVNC2DHA.3496@TK2MSFTNGP11.phx.gbl...
Bonjour/soir,
Je te conseille d'utiliser une référence Microsoft XML.
Voici un bout de code se basant sur Microsoft XML:
'Pour plus d'informations sur le DOM:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/dom_devguide_overview_2g
1j.asp
Dim Document As MSXML.DOMDocument
Set Document = New MSXML.DOMDocument
'Les opérations seront synchrones
Document.async = False
'on charge le document
If
Document.Load("http://www.unsiteparmistantdautresurlenet.fr/test.xml")
Then Dim NodeList As MSXML.IXMLDOMNodeList, i As Long
'Retrouve tous les noeux elementsuivant sous elemetentpremier
contenant au moins un element date
'Pour plus d'informations sur XPath:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/xpath_syntax1_0fjs.asp
Set NodeList > >> Document.selectNodes("elemetentpremier/elementsuivant[date]")
'On a retrouvé des éléments
If Not NodeList Is Nothing Then
For i = 0 To ChildNodeList.length - 1
'Affiche la date contenue dans l'élément date
Debug.Print
ChildNodeList(i).selectSingleNode("date").text Next i
End If
End If
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" <pub.removeme@delrieu.org> a écrit dans le message
de news:btq108$1nn$1@titan.btinternet.com
Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97. J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères de codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouver la fonction HTMLdecode (ou équivalent) qui me transforme les
"<" en "<", entre autres ? Si je me souviens bien, cette fonction
est native dans ASP , et elle est prévue dans Longhorn (voir URL ci
dessous), mais ici je ne suis pas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre,
et je découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Bonjour/soir,
Il est possible d'utiliser InternetExplorer comme ceci:
Option Explicit
Private WithEvents IEBrowser As InternetExplorer
Private Sub Command1_Click()
IEBrowser.Navigate
"http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML
&list_uidst42"
End Sub
Private Sub Form_Initialize()
Set IEBrowser = New InternetExplorer
End Sub
Private Sub Form_Terminate()
Set IEBrowser = Nothing
End Sub
Private Sub IEBrowser_DocumentComplete(ByVal pDisp As Object, URL As
Variant)
Dim XMLContent As String, PreElement As Object
Dim Document As DOMDocument
Set PreElement = IEBrowser.Document.getElementsByTagName("pre")(0)
If Not PreElement Is Nothing Then
XMLContent = PreElement.innerText
XMLContent = Replace$(XMLContent, "<!DOCTYPE Entrezgene PUBLIC
""-//NCBI//NCBI Entrezgene/EN"" ""NCBI_Entrezgene.dtd"">", "")
Set Document = New DOMDocument
Document.validateOnParse = False
MsgBox Document.loadXML(XMLContent)
MsgBox Document.parseError.reason
End If
End Sub
Tu trouveras aussi la table des caractères "spéciaux" ici:
http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset1.asp
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" a écrit dans le message de
news:btreg8$p6p$Merci François, mais j'utilise déjà le genre de code que tu
mentionne. Je n'ai probablement pas été très clair dans mon premier
mail. Je reprends :
Je capture une page web avec un code du genre (j'ai appellé la
function dumpURL):
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
la chaine de caractère que j'obtient (sDump) est de ce style :
<html>....
<body> ... blabla...
<pre>
...
<Date-std_year>2003</Date-std_year>
...
</pre>
...blabla....
</body>
</html>
Les données XML sont entre les tags <pre>. Avant de traiter ces
données avec les fonction MSXML il faut absolument decoder les ">"
en >. J'ai crée une fonction maison qui fait ça. Schématiquement, le
code ressemble à :
sURL > >
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
sDump = dumpUrl(sURL)
sDump = FonctionQuiExtraitLaChaineEntreLesTagsPre(sDump)
sDump = HTMLdecode(sDump)
domdoc.loadXML(sDump)
puis gestions des Nodes comme tu le propose, etc...
Je suis juste à la recherche d'une fonction HTMLdecode 'propre' et
rapide, probablement déjà proposé dans une référence dll.
Merci,
Olivier.
"François Picalausa" a écrit dans le message de
news:Bonjour/soir,
Je te conseille d'utiliser une référence Microsoft XML.
Voici un bout de code se basant sur Microsoft XML:
'Pour plus d'informations sur le DOM:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/dom_devguide_overview_2g
1j.asp
Dim Document As MSXML.DOMDocument
Set Document = New MSXML.DOMDocument
'Les opérations seront synchrones
Document.async = False
'on charge le document
If
Document.Load("http://www.unsiteparmistantdautresurlenet.fr/test.xml")
Then Dim NodeList As MSXML.IXMLDOMNodeList, i As Long
'Retrouve tous les noeux elementsuivant sous elemetentpremier
contenant au moins un element date
'Pour plus d'informations sur XPath:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/xpath_syntax1_0fjs.aspSet NodeList > >> Document.selectNodes("elemetentpremier/elementsuivant[date]")
'On a retrouvé des éléments
If Not NodeList Is Nothing Then
For i = 0 To ChildNodeList.length - 1
'Affiche la date contenue dans l'élément date
Debug.Print
ChildNodeList(i).selectSingleNode("date").text Next i
End If
End If
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" a écrit dans le message
de news:btq108$1nn$Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97. J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères de codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouver la fonction HTMLdecode (ou équivalent) qui me transforme les
"<" en "<", entre autres ? Si je me souviens bien, cette fonction
est native dans ASP , et elle est prévue dans Longhorn (voir URL ci
dessous), mais ici je ne suis pas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre,
et je découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Pour info, parmi les méthodes suivantes pour récupérer une page web,
pourrais tu me dire quel est la meilleure, quels sont les pour/contre :
- APIs de wininet
- INET activeX control
- object InternetExplorer de 'MS internet controls', comme tu propose
Tout ça dans un souci de compatibilité entre plusieurs versions : NT4/2K/XP
, Acc97/Acc2K ...
François,
Ok merci, ça me semble une très bonne alternative à l'usine à gaz que
j'ai pour l'instant... Cependant j'avais préféré utiliser les API de
wininet.dll pour récupérer la page, au vu des problèmes des versions
VB5 ou VB6 non patchés, mentionnés dans :
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, parmi les méthodes suivantes pour récupérer une page web,
pourrais tu me dire quel est la meilleure, quels sont les pour/contre
:
- APIs de wininet
- INET activeX control
- object InternetExplorer de 'MS internet controls', comme tu propose
Tout ça dans un souci de compatibilité entre plusieurs versions :
NT4/2K/XP , Acc97/Acc2K ...
Merci encore,
Olivier
"François Picalausa" a écrit dans le message de
news:Bonjour/soir,
Il est possible d'utiliser InternetExplorer comme ceci:
Option Explicit
Private WithEvents IEBrowser As InternetExplorer
Private Sub Command1_Click()
IEBrowser.Navigate
"http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML
&list_uidst42"
End Sub
Private Sub Form_Initialize()
Set IEBrowser = New InternetExplorer
End Sub
Private Sub Form_Terminate()
Set IEBrowser = Nothing
End Sub
Private Sub IEBrowser_DocumentComplete(ByVal pDisp As Object, URL As
Variant)
Dim XMLContent As String, PreElement As Object
Dim Document As DOMDocument
Set PreElement >> IEBrowser.Document.getElementsByTagName("pre")(0)
If Not PreElement Is Nothing Then
XMLContent = PreElement.innerText
XMLContent = Replace$(XMLContent, "<!DOCTYPE Entrezgene
PUBLIC ""-//NCBI//NCBI Entrezgene/EN"" ""NCBI_Entrezgene.dtd"">", "")
Set Document = New DOMDocument
Document.validateOnParse = False
MsgBox Document.loadXML(XMLContent)
MsgBox Document.parseError.reason
End If
End Sub
Tu trouveras aussi la table des caractères "spéciaux" ici:
http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset1.asp
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" a écrit dans le message
de news:btreg8$p6p$Merci François, mais j'utilise déjà le genre de code que tu
mentionne. Je n'ai probablement pas été très clair dans mon premier
mail. Je reprends :
Je capture une page web avec un code du genre (j'ai appellé la
function dumpURL):
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
la chaine de caractère que j'obtient (sDump) est de ce style :
<html>....
<body> ... blabla...
<pre>
...
<Date-std_year>2003</Date-std_year>
...
</pre>
...blabla....
</body>
</html>
Les données XML sont entre les tags <pre>. Avant de traiter ces
données avec les fonction MSXML il faut absolument decoder les
">" en >. J'ai crée une fonction maison qui fait ça.
Schématiquement, le code ressemble à :
sURL >>>
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
sDump = dumpUrl(sURL)
sDump = FonctionQuiExtraitLaChaineEntreLesTagsPre(sDump)
sDump = HTMLdecode(sDump)
domdoc.loadXML(sDump)
puis gestions des Nodes comme tu le propose, etc...
Je suis juste à la recherche d'une fonction HTMLdecode 'propre' et
rapide, probablement déjà proposé dans une référence dll.
Merci,
Olivier.
"François Picalausa" a écrit dans le message
de news:Bonjour/soir,
Je te conseille d'utiliser une référence Microsoft XML.
Voici un bout de code se basant sur Microsoft XML:
'Pour plus d'informations sur le DOM:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/dom_devguide_overview_2g
1j.asp
Dim Document As MSXML.DOMDocument
Set Document = New MSXML.DOMDocument
'Les opérations seront synchrones
Document.async = False
'on charge le document
If
Document.Load("http://www.unsiteparmistantdautresurlenet.fr/test.xml")
Then Dim NodeList As MSXML.IXMLDOMNodeList, i As Long
'Retrouve tous les noeux elementsuivant sous elemetentpremier
contenant au moins un element date
'Pour plus d'informations sur XPath:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/xpath_syntax1_0fjs.asp
Set NodeList >>>> Document.selectNodes("elemetentpremier/elementsuivant[date]")
'On a retrouvé des éléments
If Not NodeList Is Nothing Then
For i = 0 To ChildNodeList.length - 1
'Affiche la date contenue dans l'élément date
Debug.Print
ChildNodeList(i).selectSingleNode("date").text Next i
End If
End If
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" a écrit dans le
message de news:btq108$1nn$Cher Tous,
Je transfère des données XML de pages web vers une table d'une
base acc97. J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères de codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté
client, trouver la fonction HTMLdecode (ou équivalent) qui me
transforme les "<" en "<", entre autres ? Si je me souviens
bien, cette fonction est native dans ASP , et elle est prévue
dans Longhorn (voir URL ci dessous), mais ici je ne suis pas côté
serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas
propre, et je découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Pour info, parmi les méthodes suivantes pour récupérer une page web,
pourrais tu me dire quel est la meilleure, quels sont les pour/contre :
- APIs de wininet
- INET activeX control
- object InternetExplorer de 'MS internet controls', comme tu propose
Tout ça dans un souci de compatibilité entre plusieurs versions : NT4/2K/XP
, Acc97/Acc2K ...
François,
Ok merci, ça me semble une très bonne alternative à l'usine à gaz que
j'ai pour l'instant... Cependant j'avais préféré utiliser les API de
wininet.dll pour récupérer la page, au vu des problèmes des versions
VB5 ou VB6 non patchés, mentionnés dans :
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, parmi les méthodes suivantes pour récupérer une page web,
pourrais tu me dire quel est la meilleure, quels sont les pour/contre
:
- APIs de wininet
- INET activeX control
- object InternetExplorer de 'MS internet controls', comme tu propose
Tout ça dans un souci de compatibilité entre plusieurs versions :
NT4/2K/XP , Acc97/Acc2K ...
Merci encore,
Olivier
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de
news:uGATUmE2DHA.3496@TK2MSFTNGP11.phx.gbl...
Bonjour/soir,
Il est possible d'utiliser InternetExplorer comme ceci:
Option Explicit
Private WithEvents IEBrowser As InternetExplorer
Private Sub Command1_Click()
IEBrowser.Navigate
"http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML
&list_uidst42"
End Sub
Private Sub Form_Initialize()
Set IEBrowser = New InternetExplorer
End Sub
Private Sub Form_Terminate()
Set IEBrowser = Nothing
End Sub
Private Sub IEBrowser_DocumentComplete(ByVal pDisp As Object, URL As
Variant)
Dim XMLContent As String, PreElement As Object
Dim Document As DOMDocument
Set PreElement >> IEBrowser.Document.getElementsByTagName("pre")(0)
If Not PreElement Is Nothing Then
XMLContent = PreElement.innerText
XMLContent = Replace$(XMLContent, "<!DOCTYPE Entrezgene
PUBLIC ""-//NCBI//NCBI Entrezgene/EN"" ""NCBI_Entrezgene.dtd"">", "")
Set Document = New DOMDocument
Document.validateOnParse = False
MsgBox Document.loadXML(XMLContent)
MsgBox Document.parseError.reason
End If
End Sub
Tu trouveras aussi la table des caractères "spéciaux" ici:
http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset1.asp
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" <pub.removeme@delrieu.org> a écrit dans le message
de news:btreg8$p6p$1@sparta.btinternet.com
Merci François, mais j'utilise déjà le genre de code que tu
mentionne. Je n'ai probablement pas été très clair dans mon premier
mail. Je reprends :
Je capture une page web avec un code du genre (j'ai appellé la
function dumpURL):
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
la chaine de caractère que j'obtient (sDump) est de ce style :
<html>....
<body> ... blabla...
<pre>
...
<Date-std_year>2003</Date-std_year>
...
</pre>
...blabla....
</body>
</html>
Les données XML sont entre les tags <pre>. Avant de traiter ces
données avec les fonction MSXML il faut absolument decoder les
">" en >. J'ai crée une fonction maison qui fait ça.
Schématiquement, le code ressemble à :
sURL >>>
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
sDump = dumpUrl(sURL)
sDump = FonctionQuiExtraitLaChaineEntreLesTagsPre(sDump)
sDump = HTMLdecode(sDump)
domdoc.loadXML(sDump)
puis gestions des Nodes comme tu le propose, etc...
Je suis juste à la recherche d'une fonction HTMLdecode 'propre' et
rapide, probablement déjà proposé dans une référence dll.
Merci,
Olivier.
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message
de news:e5AzVNC2DHA.3496@TK2MSFTNGP11.phx.gbl...
Bonjour/soir,
Je te conseille d'utiliser une référence Microsoft XML.
Voici un bout de code se basant sur Microsoft XML:
'Pour plus d'informations sur le DOM:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/dom_devguide_overview_2g
1j.asp
Dim Document As MSXML.DOMDocument
Set Document = New MSXML.DOMDocument
'Les opérations seront synchrones
Document.async = False
'on charge le document
If
Document.Load("http://www.unsiteparmistantdautresurlenet.fr/test.xml")
Then Dim NodeList As MSXML.IXMLDOMNodeList, i As Long
'Retrouve tous les noeux elementsuivant sous elemetentpremier
contenant au moins un element date
'Pour plus d'informations sur XPath:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/xpath_syntax1_0fjs.asp
Set NodeList >>>> Document.selectNodes("elemetentpremier/elementsuivant[date]")
'On a retrouvé des éléments
If Not NodeList Is Nothing Then
For i = 0 To ChildNodeList.length - 1
'Affiche la date contenue dans l'élément date
Debug.Print
ChildNodeList(i).selectSingleNode("date").text Next i
End If
End If
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" <pub.removeme@delrieu.org> a écrit dans le
message de news:btq108$1nn$1@titan.btinternet.com
Cher Tous,
Je transfère des données XML de pages web vers une table d'une
base acc97. J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères de codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté
client, trouver la fonction HTMLdecode (ou équivalent) qui me
transforme les "<" en "<", entre autres ? Si je me souviens
bien, cette fonction est native dans ASP , et elle est prévue
dans Longhorn (voir URL ci dessous), mais ici je ne suis pas côté
serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas
propre, et je découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Pour info, parmi les méthodes suivantes pour récupérer une page web,
pourrais tu me dire quel est la meilleure, quels sont les pour/contre :
- APIs de wininet
- INET activeX control
- object InternetExplorer de 'MS internet controls', comme tu propose
Tout ça dans un souci de compatibilité entre plusieurs versions : NT4/2K/XP
, Acc97/Acc2K ...
François,
Ok merci, ça me semble une très bonne alternative à l'usine à gaz que
j'ai pour l'instant... Cependant j'avais préféré utiliser les API de
wininet.dll pour récupérer la page, au vu des problèmes des versions
VB5 ou VB6 non patchés, mentionnés dans :
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, parmi les méthodes suivantes pour récupérer une page web,
pourrais tu me dire quel est la meilleure, quels sont les pour/contre
:
- APIs de wininet
- INET activeX control
- object InternetExplorer de 'MS internet controls', comme tu propose
Tout ça dans un souci de compatibilité entre plusieurs versions :
NT4/2K/XP , Acc97/Acc2K ...
Merci encore,
Olivier
"François Picalausa" a écrit dans le message de
news:Bonjour/soir,
Il est possible d'utiliser InternetExplorer comme ceci:
Option Explicit
Private WithEvents IEBrowser As InternetExplorer
Private Sub Command1_Click()
IEBrowser.Navigate
"http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML
&list_uidst42"
End Sub
Private Sub Form_Initialize()
Set IEBrowser = New InternetExplorer
End Sub
Private Sub Form_Terminate()
Set IEBrowser = Nothing
End Sub
Private Sub IEBrowser_DocumentComplete(ByVal pDisp As Object, URL As
Variant)
Dim XMLContent As String, PreElement As Object
Dim Document As DOMDocument
Set PreElement >> IEBrowser.Document.getElementsByTagName("pre")(0)
If Not PreElement Is Nothing Then
XMLContent = PreElement.innerText
XMLContent = Replace$(XMLContent, "<!DOCTYPE Entrezgene
PUBLIC ""-//NCBI//NCBI Entrezgene/EN"" ""NCBI_Entrezgene.dtd"">", "")
Set Document = New DOMDocument
Document.validateOnParse = False
MsgBox Document.loadXML(XMLContent)
MsgBox Document.parseError.reason
End If
End Sub
Tu trouveras aussi la table des caractères "spéciaux" ici:
http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset1.asp
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" a écrit dans le message
de news:btreg8$p6p$Merci François, mais j'utilise déjà le genre de code que tu
mentionne. Je n'ai probablement pas été très clair dans mon premier
mail. Je reprends :
Je capture une page web avec un code du genre (j'ai appellé la
function dumpURL):
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
la chaine de caractère que j'obtient (sDump) est de ce style :
<html>....
<body> ... blabla...
<pre>
...
<Date-std_year>2003</Date-std_year>
...
</pre>
...blabla....
</body>
</html>
Les données XML sont entre les tags <pre>. Avant de traiter ces
données avec les fonction MSXML il faut absolument decoder les
">" en >. J'ai crée une fonction maison qui fait ça.
Schématiquement, le code ressemble à :
sURL >>>
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
sDump = dumpUrl(sURL)
sDump = FonctionQuiExtraitLaChaineEntreLesTagsPre(sDump)
sDump = HTMLdecode(sDump)
domdoc.loadXML(sDump)
puis gestions des Nodes comme tu le propose, etc...
Je suis juste à la recherche d'une fonction HTMLdecode 'propre' et
rapide, probablement déjà proposé dans une référence dll.
Merci,
Olivier.
"François Picalausa" a écrit dans le message
de news:Bonjour/soir,
Je te conseille d'utiliser une référence Microsoft XML.
Voici un bout de code se basant sur Microsoft XML:
'Pour plus d'informations sur le DOM:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/dom_devguide_overview_2g
1j.asp
Dim Document As MSXML.DOMDocument
Set Document = New MSXML.DOMDocument
'Les opérations seront synchrones
Document.async = False
'on charge le document
If
Document.Load("http://www.unsiteparmistantdautresurlenet.fr/test.xml")
Then Dim NodeList As MSXML.IXMLDOMNodeList, i As Long
'Retrouve tous les noeux elementsuivant sous elemetentpremier
contenant au moins un element date
'Pour plus d'informations sur XPath:
'http://msdn.microsoft.com/library/en-us/xmlsdk/htm/xpath_syntax1_0fjs.asp
Set NodeList >>>> Document.selectNodes("elemetentpremier/elementsuivant[date]")
'On a retrouvé des éléments
If Not NodeList Is Nothing Then
For i = 0 To ChildNodeList.length - 1
'Affiche la date contenue dans l'élément date
Debug.Print
ChildNodeList(i).selectSingleNode("date").text Next i
End If
End If
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
"Olivier Delrieu" a écrit dans le
message de news:btq108$1nn$Cher Tous,
Je transfère des données XML de pages web vers une table d'une
base acc97. J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères de codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté
client, trouver la fonction HTMLdecode (ou équivalent) qui me
transforme les "<" en "<", entre autres ? Si je me souviens
bien, cette fonction est native dans ASP , et elle est prévue
dans Longhorn (voir URL ci dessous), mais ici je ne suis pas côté
serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas
propre, et je découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Cher Tous,
Je transfère des données XML de pages web vers une table d'une base acc97.
J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&
Forcement, la chaine que j'obtients est non formattée avec les caractères
de
codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouver
la fonction HTMLdecode (ou équivalent) qui me transforme les "<" en
"<",
entre autres ? Si je me souviens bien, cette fonction est native dans ASP
,
et elle est prévue dans Longhorn (voir URL ci dessous), mais ici je ne
suis
pas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/
J'ai bien fait une fonction à la main, mais c'est lent, pas propre, et je
découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Cher Tous,
Je transfère des données XML de pages web vers une table d'une base acc97.
J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&
Forcement, la chaine que j'obtients est non formattée avec les caractères
de
codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouver
la fonction HTMLdecode (ou équivalent) qui me transforme les "<" en
"<",
entre autres ? Si je me souviens bien, cette fonction est native dans ASP
,
et elle est prévue dans Longhorn (voir URL ci dessous), mais ici je ne
suis
pas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/
J'ai bien fait une fonction à la main, mais c'est lent, pas propre, et je
découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Cher Tous,
Je transfère des données XML de pages web vers une table d'une base acc97.
J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&
Forcement, la chaine que j'obtients est non formattée avec les caractères
de
codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouver
la fonction HTMLdecode (ou équivalent) qui me transforme les "<" en
"<",
entre autres ? Si je me souviens bien, cette fonction est native dans ASP
,
et elle est prévue dans Longhorn (voir URL ci dessous), mais ici je ne
suis
pas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/
J'ai bien fait une fonction à la main, mais c'est lent, pas propre, et je
découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Salut,
Sinon pour récupérer ta page, pourquoi pas utiliser URLDownloadToFile, ca
fonctionne très bien comme API ;-)
Il te suffirait alors de faire tes découpages (pour récupérer ce qu'il y a
entre <pre></pre>) avec les fonctions de string implantées dans vb( instr,
right, left, mid, instrrev...) puis d'utiliser simplement replace() pour
faire tes remplacements (les > et alt; devraient suffir pour procéder
au
parsing...)
Enfin tu fais ton parsing avec ce que tu veux, mais s'il s'agit de petits
fichier, pourquoi ne pas écrire une petite classe sous VB ? :-)
Ca allégerait les dépendances.
--
Nicolas.
http://www.ngsoft-fr.com
"Olivier Delrieu" a écrit dans le message de
news: btq108$1nn$Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97.
J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&
list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères
decodages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouverla fonction HTMLdecode (ou équivalent) qui me transforme les "<" en
"<",entre autres ? Si je me souviens bien, cette fonction est native dans
ASP
,et elle est prévue dans Longhorn (voir URL ci dessous), mais ici je ne
suispas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/
frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre, et
je
découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Salut,
Sinon pour récupérer ta page, pourquoi pas utiliser URLDownloadToFile, ca
fonctionne très bien comme API ;-)
Il te suffirait alors de faire tes découpages (pour récupérer ce qu'il y a
entre <pre></pre>) avec les fonctions de string implantées dans vb( instr,
right, left, mid, instrrev...) puis d'utiliser simplement replace() pour
faire tes remplacements (les > et alt; devraient suffir pour procéder
au
parsing...)
Enfin tu fais ton parsing avec ce que tu veux, mais s'il s'agit de petits
fichier, pourquoi ne pas écrire une petite classe sous VB ? :-)
Ca allégerait les dépendances.
--
Nicolas.
http://www.ngsoft-fr.com
"Olivier Delrieu" <pub.removeme@delrieu.org> a écrit dans le message de
news: btq108$1nn$1@titan.btinternet.com...
Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97.
J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&
list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères
de
codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouver
la fonction HTMLdecode (ou équivalent) qui me transforme les "<" en
"<",
entre autres ? Si je me souviens bien, cette fonction est native dans
ASP
,
et elle est prévue dans Longhorn (voir URL ci dessous), mais ici je ne
suis
pas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/
frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre, et
je
découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Salut,
Sinon pour récupérer ta page, pourquoi pas utiliser URLDownloadToFile, ca
fonctionne très bien comme API ;-)
Il te suffirait alors de faire tes découpages (pour récupérer ce qu'il y a
entre <pre></pre>) avec les fonctions de string implantées dans vb( instr,
right, left, mid, instrrev...) puis d'utiliser simplement replace() pour
faire tes remplacements (les > et alt; devraient suffir pour procéder
au
parsing...)
Enfin tu fais ton parsing avec ce que tu veux, mais s'il s'agit de petits
fichier, pourquoi ne pas écrire une petite classe sous VB ? :-)
Ca allégerait les dépendances.
--
Nicolas.
http://www.ngsoft-fr.com
"Olivier Delrieu" a écrit dans le message de
news: btq108$1nn$Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97.
J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&
list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères
decodages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouverla fonction HTMLdecode (ou équivalent) qui me transforme les "<" en
"<",entre autres ? Si je me souviens bien, cette fonction est native dans
ASP
,et elle est prévue dans Longhorn (voir URL ci dessous), mais ici je ne
suispas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/
frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre, et
je
découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Je ne t'ai pas dis que cette base va fonctionner sur plusieurs type de
postes : NT/2K/XPp avec Acc97/2K ... donc je ne suis pas sûr que
URLDownloadToFile, instrrev et replace soient installés partout ... d'où
le
retour à de 'vielles' API ... qu'en penses tu ??
Dans ce cas il faudrait simplement recoder les fonctions manquantes, avec un
L'option proposée par François d'utiliser l'object InternetExplorer me
semble pas mal, mais je suis pas sûr que cela fonctionne partout : il faut
que je teste. Qu'en dis tu ?
En effet c'est une bonne astuce, et normalement cela fonctionne partout où
Pour info, je viens de m'appercevoir qu'il n'y a que 5 codes à gérer
(merci
pour ta remarque : ça à fait tilt !):
< > ' " &
comme décrit dans :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/htm/
(paragraphe 'Use fewer named entities')
Donc moins de soucis en perspective !!
Enfin, les pages font jusqu'à 500Ko avec plus de tags XML que de texte,
elles se parsent très bien avec les objects du type MSXML2.DOMDocument.
Ok ;-)
Merci Nicolas !
Je ne t'ai pas dis que cette base va fonctionner sur plusieurs type de
postes : NT/2K/XPp avec Acc97/2K ... donc je ne suis pas sûr que
URLDownloadToFile, instrrev et replace soient installés partout ... d'où
le
retour à de 'vielles' API ... qu'en penses tu ??
L'option proposée par François d'utiliser l'object InternetExplorer me
semble pas mal, mais je suis pas sûr que cela fonctionne partout : il faut
que je teste. Qu'en dis tu ?
Pour info, je viens de m'appercevoir qu'il n'y a que 5 codes à gérer
(merci
pour ta remarque : ça à fait tilt !):
< > ' " &
comme décrit dans :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/htm/
(paragraphe 'Use fewer named entities')
Donc moins de soucis en perspective !!
Enfin, les pages font jusqu'à 500Ko avec plus de tags XML que de texte,
elles se parsent très bien avec les objects du type MSXML2.DOMDocument.
a+
Olivier
"ng" a écrit dans le message de
news:Salut,
Sinon pour récupérer ta page, pourquoi pas utiliser URLDownloadToFile,
ca
fonctionne très bien comme API ;-)
Il te suffirait alors de faire tes découpages (pour récupérer ce qu'il y
a
entre <pre></pre>) avec les fonctions de string implantées dans vb(
instr,
right, left, mid, instrrev...) puis d'utiliser simplement replace() pour
faire tes remplacements (les > et alt; devraient suffir pour procéder
auparsing...)
Enfin tu fais ton parsing avec ce que tu veux, mais s'il s'agit de
petits
fichier, pourquoi ne pas écrire une petite classe sous VB ? :-)
Ca allégerait les dépendances.
--
Nicolas.
http://www.ngsoft-fr.com
"Olivier Delrieu" a écrit dans le message de
news: btq108$1nn$Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97.J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&
list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractèresdecodages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouverla fonction HTMLdecode (ou équivalent) qui me transforme les "<" en
"<",entre autres ? Si je me souviens bien, cette fonction est native dans
ASP,et elle est prévue dans Longhorn (voir URL ci dessous), mais ici je ne
suispas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/
frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre, et
jedécouvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Je ne t'ai pas dis que cette base va fonctionner sur plusieurs type de
postes : NT/2K/XPp avec Acc97/2K ... donc je ne suis pas sûr que
URLDownloadToFile, instrrev et replace soient installés partout ... d'où
le
retour à de 'vielles' API ... qu'en penses tu ??
Dans ce cas il faudrait simplement recoder les fonctions manquantes, avec un
L'option proposée par François d'utiliser l'object InternetExplorer me
semble pas mal, mais je suis pas sûr que cela fonctionne partout : il faut
que je teste. Qu'en dis tu ?
En effet c'est une bonne astuce, et normalement cela fonctionne partout où
Pour info, je viens de m'appercevoir qu'il n'y a que 5 codes à gérer
(merci
pour ta remarque : ça à fait tilt !):
< > ' " &
comme décrit dans :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/htm/
(paragraphe 'Use fewer named entities')
Donc moins de soucis en perspective !!
Enfin, les pages font jusqu'à 500Ko avec plus de tags XML que de texte,
elles se parsent très bien avec les objects du type MSXML2.DOMDocument.
Ok ;-)
Merci Nicolas !
Je ne t'ai pas dis que cette base va fonctionner sur plusieurs type de
postes : NT/2K/XPp avec Acc97/2K ... donc je ne suis pas sûr que
URLDownloadToFile, instrrev et replace soient installés partout ... d'où
le
retour à de 'vielles' API ... qu'en penses tu ??
L'option proposée par François d'utiliser l'object InternetExplorer me
semble pas mal, mais je suis pas sûr que cela fonctionne partout : il faut
que je teste. Qu'en dis tu ?
Pour info, je viens de m'appercevoir qu'il n'y a que 5 codes à gérer
(merci
pour ta remarque : ça à fait tilt !):
< > ' " &
comme décrit dans :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/htm/
(paragraphe 'Use fewer named entities')
Donc moins de soucis en perspective !!
Enfin, les pages font jusqu'à 500Ko avec plus de tags XML que de texte,
elles se parsent très bien avec les objects du type MSXML2.DOMDocument.
a+
Olivier
"ng" <ng@babeuk.net> a écrit dans le message de
news:eLIKV0G2DHA.2180@TK2MSFTNGP12.phx.gbl...
Salut,
Sinon pour récupérer ta page, pourquoi pas utiliser URLDownloadToFile,
ca
fonctionne très bien comme API ;-)
Il te suffirait alors de faire tes découpages (pour récupérer ce qu'il y
a
entre <pre></pre>) avec les fonctions de string implantées dans vb(
instr,
right, left, mid, instrrev...) puis d'utiliser simplement replace() pour
faire tes remplacements (les > et alt; devraient suffir pour procéder
au
parsing...)
Enfin tu fais ton parsing avec ce que tu veux, mais s'il s'agit de
petits
fichier, pourquoi ne pas écrire une petite classe sous VB ? :-)
Ca allégerait les dépendances.
--
Nicolas.
http://www.ngsoft-fr.com
"Olivier Delrieu" <pub.removeme@delrieu.org> a écrit dans le message de
news: btq108$1nn$1@titan.btinternet.com...
Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97.
J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&
list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractères
de
codages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouver
la fonction HTMLdecode (ou équivalent) qui me transforme les "<" en
"<",
entre autres ? Si je me souviens bien, cette fonction est native dans
ASP
,
et elle est prévue dans Longhorn (voir URL ci dessous), mais ici je ne
suis
pas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/
frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre, et
je
découvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Je ne t'ai pas dis que cette base va fonctionner sur plusieurs type de
postes : NT/2K/XPp avec Acc97/2K ... donc je ne suis pas sûr que
URLDownloadToFile, instrrev et replace soient installés partout ... d'où
le
retour à de 'vielles' API ... qu'en penses tu ??
Dans ce cas il faudrait simplement recoder les fonctions manquantes, avec un
L'option proposée par François d'utiliser l'object InternetExplorer me
semble pas mal, mais je suis pas sûr que cela fonctionne partout : il faut
que je teste. Qu'en dis tu ?
En effet c'est une bonne astuce, et normalement cela fonctionne partout où
Pour info, je viens de m'appercevoir qu'il n'y a que 5 codes à gérer
(merci
pour ta remarque : ça à fait tilt !):
< > ' " &
comme décrit dans :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/htm/
(paragraphe 'Use fewer named entities')
Donc moins de soucis en perspective !!
Enfin, les pages font jusqu'à 500Ko avec plus de tags XML que de texte,
elles se parsent très bien avec les objects du type MSXML2.DOMDocument.
Ok ;-)
Merci Nicolas !
Je ne t'ai pas dis que cette base va fonctionner sur plusieurs type de
postes : NT/2K/XPp avec Acc97/2K ... donc je ne suis pas sûr que
URLDownloadToFile, instrrev et replace soient installés partout ... d'où
le
retour à de 'vielles' API ... qu'en penses tu ??
L'option proposée par François d'utiliser l'object InternetExplorer me
semble pas mal, mais je suis pas sûr que cela fonctionne partout : il faut
que je teste. Qu'en dis tu ?
Pour info, je viens de m'appercevoir qu'il n'y a que 5 codes à gérer
(merci
pour ta remarque : ça à fait tilt !):
< > ' " &
comme décrit dans :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/htm/
(paragraphe 'Use fewer named entities')
Donc moins de soucis en perspective !!
Enfin, les pages font jusqu'à 500Ko avec plus de tags XML que de texte,
elles se parsent très bien avec les objects du type MSXML2.DOMDocument.
a+
Olivier
"ng" a écrit dans le message de
news:Salut,
Sinon pour récupérer ta page, pourquoi pas utiliser URLDownloadToFile,
ca
fonctionne très bien comme API ;-)
Il te suffirait alors de faire tes découpages (pour récupérer ce qu'il y
a
entre <pre></pre>) avec les fonctions de string implantées dans vb(
instr,
right, left, mid, instrrev...) puis d'utiliser simplement replace() pour
faire tes remplacements (les > et alt; devraient suffir pour procéder
auparsing...)
Enfin tu fais ton parsing avec ce que tu veux, mais s'il s'agit de
petits
fichier, pourquoi ne pas écrire une petite classe sous VB ? :-)
Ca allégerait les dépendances.
--
Nicolas.
http://www.ngsoft-fr.com
"Olivier Delrieu" a écrit dans le message de
news: btq108$1nn$Cher Tous,
Je transfère des données XML de pages web vers une table d'une base
acc97.J'utilise les API de wininet.dll comme proposé dans:
http://support.microsoft.com/default.aspx?scid=kb;en-us;232194
Pour info, les données XML ont cette tête là:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=XML&
list_uidst42
Forcement, la chaine que j'obtients est non formattée avec les
caractèresdecodages habituels HTML, genre :
<Date-std_year>2003</Date-std_year>
au lieu de:
<Date-std_year>2003</Date-std_year>
Question : dans quelle référence DLL de VBA, installée côté client,
trouverla fonction HTMLdecode (ou équivalent) qui me transforme les "<" en
"<",entre autres ? Si je me souviens bien, cette fonction est native dans
ASP,et elle est prévue dans Longhorn (voir URL ci dessous), mais ici je ne
suispas côté serveur ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/
frlrfsystemwebhttpserverutilityclasshtmldecodetopic.asp
J'ai bien fait une fonction à la main, mais c'est lent, pas propre, et
jedécouvre tous les jours de nouveaux codes &machin...
Merci,
Olivier
Je ne t'ai pas dis que cette base va fonctionner sur plusieurs type
de postes : NT/2K/XPp avec Acc97/2K ... donc je ne suis pas sûr que
URLDownloadToFile, instrrev et replace soient installés partout ...
d'où le retour à de 'vielles' API ... qu'en penses tu ??
Je ne t'ai pas dis que cette base va fonctionner sur plusieurs type
de postes : NT/2K/XPp avec Acc97/2K ... donc je ne suis pas sûr que
URLDownloadToFile, instrrev et replace soient installés partout ...
d'où le retour à de 'vielles' API ... qu'en penses tu ??
Je ne t'ai pas dis que cette base va fonctionner sur plusieurs type
de postes : NT/2K/XPp avec Acc97/2K ... donc je ne suis pas sûr que
URLDownloadToFile, instrrev et replace soient installés partout ...
d'où le retour à de 'vielles' API ... qu'en penses tu ??