All -

I'm having a small problem when I'm using minidom. Here's a sample of my XML:

<classads>
<c>
<a n="CpuBusyTime"><i>0</i></a>
<a n="CpuIsBusy"><b v="f"/></a>
<a n="State"><s>Unclaimed</s></a>
<a n="EnteredCurrentState"><i>1109899523</i></a>
<a n="Activity"><s>Idle</s></a>
<a n="EnteredCurrentActivity"><i>1109899826</i></a>
</c>
</classads>

Here's my code:

condorQueueStatus = os.popen('condor_status -xml').read()

# remove all irrelevant fields from condorQueueStatus

x = minidom.parseString(condorQueueStatus)
x.normalize()

# gets the individual classads
classads = x.getElementsByTagName("c")

# match classad names to variables
for ad in classads:
currentParts = ad.getElementsByTagName("a")
for field in currentParts:
attrib = field.getAttribute("n")
if field.childNodes[0].childNodes[0].nodeType == field.childNodes[0].childNodes[0].TEXT_NODE:
nodeVal = field.childNodes[0].childNodes[0].nodeValue
print attrib + ": " + nodeVal
if field.childNodes[0].nodeType == field.childNodes[0].ATTRIBUTE_NODE:
nodeVal = field.childNodes[0].getAttribute("v")
print attrib + ": " + nodeVal


What I'm basically getting as output is this:

CpuBusyTime:
CpuIsBusy: f
State:
EnteredCurrentState:
Activity:
EnteredCurrentActivity:

However, I would like both the text fields as well as the attribute field at the same level to be represented in my output. When I try to print out only the text fields, it prints out up to the first element with an attribute and then produces this error:

Traceback (most recent call last):
File "./parserTest4.py", line 34, in ?
  nodeVal = field.childNodes[0].childNodes[0].nodeValue
IndexError: list index out of range

Does anyone have any suggestions for how I can successfully test for both the text value and the attribute?

Thanks!

- Brian
_______________________________________________
XML-SIG maillist  -  XML-SIG@python.org
http://mail.python.org/mailman/listinfo/xml-sig

Reply via email to