Je commence actuellement avec le paquet win32com. Je fichier XSL où j'utilise un objet COM programmé dans le python:Interface de requête dans le serveur COM python
<xsl:value-of select="plugin:GetTest(.)"/>
transformation XSL est effectuée en utilisant le processeur XSL et MSXML2 objet COM python est injecté en utilisant la méthode addObject. La mise en œuvre de la méthode GetTest est la suivante:
def GetTest(self, obj):
IID_IXMLDOMNode = IID("{2933BF80-7B36-11d2-B20E-00C04F983E60}")
try:
node = win32com.client.Dispatch(obj, None, IID_IXMLDOMNode)
#node = obj.QueryInterface(IID_IXMLDOMNode)
return node.get_text()
except Exception as e:
return format_exc()
L'argument obj est de type PyIDispatch. Afin de travailler avec mon interface de noeud IXMLDOMNode je dois l'obtenir en quelque sorte, non? Cependant, l'approche décommentée échoue avec
AttributeError: <unknown>.get_text
Et l'approche commenté échoue avec
obj.QueryInterface(IID_IXMLDOMNode)<\u000d>pywintypes.com_error: (-2147467262, 'No such interface supported'
Quelqu'un peut-il a suggéré ce que je fais mal? Merci d'avance.
Je ne l'ai jamais utilisé MSXML avec Python, donc je ne peux pas évaluer la partie Python du code, mais autant que je me souvienne de JScript ou VBScript lorsque vous utilisez par exemple 'foo: method (.)' du côté XSLT vous ne passez pas un seul noeud à la méthode mais plutôt une sélection https://msdn.microsoft.com/fr-fr/library/ms759171(v=vs.85) .aspx, vous pouvez donc essayer de savoir si votre code Python peut être adapté pour lancer une sélection et non un nœud. –
Merci. Vous avez raison, le _obj_ est la sélection DOM –