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