FAQ
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

Search Discussions

  • Marcel Vandendungen at Jun 13, 2005 at 7:52 pm
    For future reference:

    The solution to this problem is a simple one.
    rgelem = list(xmldoc.selectNodes('/root/elem'))
    returns a real list of IXMLDOMElements that can be sliced.

    -- Marcel

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppython-list @
categoriespython
postedJun 12, '05 at 1:34p
activeJun 13, '05 at 7:52p
posts2
users1
websitepython.org

1 user in discussion

Marcel Vandendungen: 2 posts

People

Translate

site design / logo © 2022 Grokbase