what i'm after is a list of Userbeans, which are in themselves a list
You need to think in terms of "nodes", not "lists." selectNodes
returns a pointer to a set of nodes, but when you iterate through it you wind up with an IXMLDOMNode, not a Node List. You can only get a nodeList by calling a method, such as selectNodes.
You can to call selectNodes again, or just use the IXMLDOMNode's childNodes
property, Documented at MSDN
Dim userBeanList As MSXML2.IXMLDOMNodeList
Dim userbean As MSXML2.IXMLDOMNode
Dim beanChild As MSXML2.IXMLDOMNode
Set userBeanList = xmlDoc.selectNodes("//UserBean")
For Each userBean In userBeanList
For Each beanChild In userBean.childNodes
Debug.Print beanChild.nodeName & ":" & beanChildText
Next beanChild
Next userBean
Note that with a proper XPath Query, you can just select a list of nodes that meet your criteria. And since this is VBA, you can skip the explicit declarations unless you're going to take advantage of the intellisense.
dim badNodes, badNode
set badNodes = xmlDoc.selectNodes("//UserBean/*[not(text())]")
if badNodes.length < 1 then
debug.Print "All good!"
else
debug.Print "following nodes are empty:"
For Each badNode in badNodes
debug.print " - " & badNode.name
next badNode
endif