Slicing an IXMLDOMNodeList

marcel.vandendungen at gmail.com marcel.vandendungen at gmail.com
Sun Jun 12 09:34:14 EDT 2005


Hi,

I'm using MSXML to select elements from a XML document and want
to slice off the last part of an IXMLDOMNodeList.

>>> import win32com.client
>>> xmldoc = win32com.client.Dispatch('msxml.DOMDocument')
>>> xmldoc.load('file.xml')
True
>>> rgelem = xmldoc.selectNodes('/root/elem')
>>> if rgelem.length > 10:
... 	rgelem = rgelem[-10:]
...
Traceback (most recent call last):
  File "<interactive input>", line 2, in ?
  File "C:\Python24\Lib\site-packages\win32com\client\__init__.py",
line 454, in __getattr__
    raise AttributeError, "'%s' object has no attribute '%s'" %
(repr(self), attr)
AttributeError: '<win32com.gen_py.Microsoft XML, v4.0.IXMLDOMNodeList
instance at 0x19500888>' object has no attribute '__len__'
>>>

The IXMLDOMNodeList obviously doesn't have a '__len__' member
function (why not?).
Is there a way to make the IXMLDOMNodeList support slicing?
I've tried to give the rgelem object a __len__ member, but got
an exception from __setattr__:

  File "C:\Python24\Lib\site-packages\win32com\client\__init__.py",
line 462, in __setattr__
    raise AttributeError, "'%s' object has no attribute '%s'" %
(repr(self), attr)
AttributeError: '<win32com.gen_py.Microsoft XML, v4.0.IXMLDOMNodeList
instance at 0x26395112>' object has no attribute '__len__'

Anybody know how to make this work?

TIA,
-- Marcel




More information about the Python-list mailing list