Article View: fr.comp.text.xml
Article #10397"Caster" une interface "node" en interface "element" dans le DOM microsoft?
From: Jean-Philippe BRUNET
Date: Sun, 15 Oct 2000 06:25
Date: Sun, 15 Oct 2000 06:25
56 lines
3187 bytes
3187 bytes
Je travaille en C++ en environnement Microsoft.
Quelqu'un sait-il comment on peut r�cup�rer une interface
MSXML2::IXMLDOMElement � partir d'une interface MSXML2::IXMLDOMNode bien sur
quand le "node" est un "�l�ment".
La doc dit que IXMLDOMElement h�rite deIXMLDOMNode mais je ne connais pas
la formule magique pour "caster" un objet interface en un autre (un "cast"
C++ standard crashe m�chamment).
Voici le bout de source concern�:
///************************************************
XML SOURCE
///************************************************
<root>
<table>
<line>xxx</line>
<line>yyy</line>
<line>zzz</line>
</table>
<table>
<line>aaa</line>
<line>bbb</line>
<line>ccc</line>
</table>
</root>
///****************************************************************
C++ SOURCE
///****************************************************************
../..
HRESULT hr;
bstr_t str = "/root/table";
MSXML2::IXMLDOMNodeList *list ;
MSXML2::IXMLDOMNode *item ;
MSXML2::IXMLDOMElement *element ;
hr= m_XmlDom->selectNodes(str,&list);
ASSERT(hr== S_OK) ;
long len ;
list->get_length(&len) ;// V�rifie que l'on a deux tables
for(int i=0;hr== S_OK && i< len ;i++){ // Accede aux deux tables
successivement
BSTR src ;
hr = list->get_item(i,&item);// R�cup�re un NODE, tout va bien
ASSERT(hr== S_OK) ;
hr= item->get_nodeType(&nodeType);// Verifie que le node est bien un
�l�ment, ca va toujours
ASSERT(hr== S_OK) ;
ASSERT(nodeType == NODE_ELEMENT);
//********************************************************
// ***** A partir de l�, je d�croche, il faudrait r�cup�rer l'�l�ment.
HELP!****
//********************************************************
// j'ai essay� histoire de rigoler
// element = (MSXML2::IXMLDOMElement *) item ;
//Ca plante violent
// Que faire en fait. il doit bien exister une formule magique pour
"caster" une interface dans un de ses descendants
//ou une facon en DOM de reconstruire un �l�ment existant.
Technical Details
Message-ID:
<8sbi8m$18l4$1@news5.isdnet.net>Path:
arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!sienna.impulse.net!63.208.208.143.MISMATCH!feed2.onemain.com!feed1.onemain.com!isdnet!isdnethub!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: FRENCH,ASCII X-Google-Thread: 114f60,6013863413d8b177,start X-Google-Attributes: gid114f60,public X-Google-ArrivalTime: 2000-10-14 23:20:06 PST Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!sienna.impulse.net!63.208.208.143.MISMATCH!feed2.onemain.com!feed1.onemain.com!isdnet!isdnethub!not-for-mail From: "Jean-Philippe BRUNET" <jean-philippe.brunet@libertysurf.fr> Newsgroups: fr.comp.text.xml Subject: "Caster" une interface "node" en interface "element" dans le DOM microsoft? Date: Sun, 15 Oct 2000 08:25:23 +0200 Lines: 61 Message-ID: <8sbi8m$18l4$1@news5.isdnet.net> NNTP-Posting-Host: dyn-213-36-92-14.ppp.libertysurf.fr X-Trace: news5.isdnet.net 971590742 41636 213.36.92.14 (15 Oct 2000 06:19:02 GMT) X-Complaints-To: abuse@isdnet.net NNTP-Posting-Date: 15 Oct 2000 06:19:02 GMT X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.50.4133.2400 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400