HI all, I am looking to parse a unix tool called lshw ( http://ezix.sourceforge.net/software/lshw.html ). Now this provides a nice XML output which looks similar to the bottom of this message..
Now I want to parse and get some information from it so here is what I have.. class HWParser: def __init__(self): if os.path.isfile(LSHW): lshw=Exec.Exec(LSHW) lshw.execute('-xml') else: print "lshw does not exist", LSWH return "Unknown" self.data = lshw.read() self.error = lshw.error() self.exit = lshw.poll() if self.error: print "Error Exist", self.error return else: self.xml = minidom.parseString(self.data) self.xml.normalize() self.context=xml.xpath.Context.Context(self.xml) def CPUType(self): nodes = xml.xpath.Evaluate("//processor/description/text()", context=self.context) for node in nodes: print node.nodeValue def p (self): print self.xml.toxml() c=HWParser() c.p() c.CPUType() Now if you can't tell I am a newbie and really want to have some help here. I know the c.p does work and it does spit out all of the XML backout. So getting the data in is not a problem, getting it out appears to be a problem. Basically my problem is that I want to bet able to say get me the type of CPU we have. I know I could grep this information but I'd rather do it the proper way. So when I call c.CPUType it should return [ Intel(R) Xeon(TM) CPU 2.8Ghz, Intel(R) Xeon(TM) CPU 2.8Ghz ] because there is two of them.. Am I asking too much? Probably just an idiot at the wheel :) Feel free to comment on my style as well as hey - that's probably a bit messy too :) Thanks much -------------------------------------------------- <?xml version="1.0" standalone="yes" ?> <!-- generated by lshw-B.02.03 --> <!-- GCC 3.2.3 20030502 (Red Hat Linux 3.2.3-42) --> <node id="cpu:0" claimed="true" class="processor" handle="DMI:0400"> <description>CPU</description> <product>Intel(R) Xeon(TM) CPU 2.80GHz</product> <vendor>Intel Corp.</vendor> <physid>400</physid> <businfo>[EMAIL PROTECTED]</businfo> <version>15.2.7</version> <slot>Proc_1</slot> <size units="Hz">2800000000</size> <capacity units="Hz">3000000000</capacity> <width units="bits">32</width> <clock units="Hz">400000000</clock> <configuration> <setting id="id" value="6" /> </configuration> <capabilities> <capability id="fpu" >mathematical co-processor</capability> <capability id="fpu_exception" >FPU exceptions reporting</capability> <capability id="wp" /> <capability id="vme" >virtual mode extensions</capability> <capability id="de" >debugging extensions</capability> <capability id="pse" >page size extensions</capability> <capability id="tsc" >time stamp counter</capability> <capability id="msr" >model-specific registers</capability> <capability id="pae" >4GB+ memory addressing (Physical Address Extension)</capability> <capability id="mce" >machine check exceptions</capability> <capability id="cx8" >compare and exchange 8-byte</capability> <capability id="apic" >on-chip advanced programmable interrupt controller (APIC)</capability> <capability id="sep" >fast system calls</capability> <capability id="mtrr" >memory type range registers</capability> <capability id="pge" >page global enable</capability> <capability id="mca" >machine check architecture</capability> <capability id="cmov" >conditional move instruction</capability> <capability id="pat" >page attribute table</capability> <capability id="pse36" >36-bit page size extensions</capability> <capability id="clflush" /> <capability id="dts" >debug trace and EMON store MSRs</capability> <capability id="acpi" >thermal control (ACPI)</capability> <capability id="mmx" >multimedia extensions (MMX)</capability> <capability id="fxsr" >fast floating point save/restore</capability> <capability id="sse" >streaming SIMD extensions (SSE)</capability> <capability id="sse2" >streaming SIMD extensions (SSE2)</capability> <capability id="ss" >self-snoop</capability> <capability id="ht" >HyperThreading</capability> <capability id="tm" >thermal interrupt and status</capability> </capabilities> <node id="logicalcpu:0" claimed="true" class="processor" handle="CPU:6.0"> <description>Logical CPU</description> <physid>6.1</physid> <width units="bits">32</width> <capabilities> <capability id="logical" >Logical CPU</capability> </capabilities> </node> <node id="logicalcpu:1" claimed="true" class="processor" handle="CPU:6.1"> <description>Logical CPU</description> <physid>6.2</physid> <width units="bits">32</width> <capabilities> <capability id="logical" >Logical CPU</capability> </capabilities> </node> </node> <node id="cpu:1" disabled="true" claimed="true" class="processor" handle="DMI:0401"> <description>CPU</description> <product>Intel(R) Xeon(TM) CPU 2.80GHz</product> <vendor>Intel Corp.</vendor> <physid>401</physid> <businfo>[EMAIL PROTECTED]</businfo> <version>15.2.7</version> <slot>Proc_2</slot> <size units="Hz">2800000000</size> <capacity units="Hz">3000000000</capacity> <width units="bits">32</width> <clock units="Hz">400000000</clock> <configuration> <setting id="id" value="6" /> </configuration> <capabilities> <capability id="fpu" >mathematical co-processor</capability> <capability id="fpu_exception" >FPU exceptions reporting</capability> <capability id="wp" /> <capability id="vme" >virtual mode extensions</capability> <capability id="de" >debugging extensions</capability> <capability id="pse" >page size extensions</capability> <capability id="tsc" >time stamp counter</capability> <capability id="msr" >model-specific registers</capability> <capability id="pae" >4GB+ memory addressing (Physical Address Extension)</capability> <capability id="mce" >machine check exceptions</capability> <capability id="cx8" >compare and exchange 8-byte</capability> <capability id="apic" >on-chip advanced programmable interrupt controller (APIC)</capability> <capability id="sep" >fast system calls</capability> <capability id="mtrr" >memory type range registers</capability> <capability id="pge" >page global enable</capability> <capability id="mca" >machine check architecture</capability> <capability id="cmov" >conditional move instruction</capability> <capability id="pat" >page attribute table</capability> <capability id="pse36" >36-bit page size extensions</capability> <capability id="clflush" /> <capability id="dts" >debug trace and EMON store MSRs</capability> <capability id="acpi" >thermal control (ACPI)</capability> <capability id="mmx" >multimedia extensions (MMX)</capability> <capability id="fxsr" >fast floating point save/restore</capability> <capability id="sse" >streaming SIMD extensions (SSE)</capability> <capability id="sse2" >streaming SIMD extensions (SSE2)</capability> <capability id="ss" >self-snoop</capability> <capability id="ht" >HyperThreading</capability> <capability id="tm" >thermal interrupt and status</capability> </capabilities> <node id="logicalcpu:0" claimed="true" class="processor" handle="CPU:6.0"> <description>Logical CPU</description> <physid>6.1</physid> <width units="bits">32</width> <capabilities> <capability id="logical" >Logical CPU</capability> </capabilities> </node> <node id="logicalcpu:1" claimed="true" class="processor" handle="CPU:6.1"> <description>Logical CPU</description> <physid>6.2</physid> <width units="bits">32</width> <capabilities> <capability id="logical" >Logical CPU</capability> </capabilities> </node> </node> -- http://mail.python.org/mailman/listinfo/python-list