python minidom 读取 xml
python minidom read xml
我有这个 xml :
<?DOMParser ?>
<logbook:LogBook xmlns:logbook="http://www/logbook/1.0" version="1.2">
<visits>
<visit>
<general>
<startDateTime>2014-01-10T12:22:39.166</startDateTime>
<endDateTime>2014-03-11T13:51:31.480</endDateTime>
</general>
</visit>
<visit>
<general>
<startDateTime>2013-01-10T12:22:39.166</startDateTime>
<endDateTime>2013-03-11T13:51:31.480</endDateTime>
</general>
</visit>
</visits>
</logbook:LogBook>
我想从 xml 得到这个输出:
startDateTime | endDateTime |
-----------------------|-----------------------|
2014-01-10T12:22:39.166|2014-03-11T13:51:31.480|
-----------------------|-----------------------|
2013-01-10T12:22:39.166|2013-03-11T13:51:31.480|
我正在使用 minidom
,所以我写道:
import xml.dom.minidom as minidom
doc=minidom.parse('test.xml')
general=doc.getElementsByTagName('general')[0]
startDateTime=general.getAttribute('startDateTime')
print(startDateTime)
这个return空字符串给我。有什么帮助吗?
我更喜欢使用 ElementTree class:
from StringIO import StringIO
from xml.etree.ElementTree import ElementTree
et = ElementTree(None, StringIO("""<?DOMParser ?>
<logbook:LogBook xmlns:logbook="http://www/logbook/1.0" version="1.2">
<visits>
<visit>
<general>
<startDateTime>2014-01-10T12:22:39.166</startDateTime>
<endDateTime>2014-03-11T13:51:31.480</endDateTime>
</general>
</visit>
<visit>
<general>
<startDateTime>2013-01-10T12:22:39.166</startDateTime>
<endDateTime>2013-03-11T13:51:31.480</endDateTime>
</general>
</visit>
</visits>
</logbook:LogBook>"""))
for general in et.iterfind('visits/visit/general'):
start = general.findtext('startDateTime')
finish = general.findtext('endDateTime')
print start, finish
输出:
2014-01-10T12:22:39.166 2014-03-11T13:51:31.480
2013-01-10T12:22:39.166 2013-03-11T13:51:31.480
我有这个 xml :
<?DOMParser ?>
<logbook:LogBook xmlns:logbook="http://www/logbook/1.0" version="1.2">
<visits>
<visit>
<general>
<startDateTime>2014-01-10T12:22:39.166</startDateTime>
<endDateTime>2014-03-11T13:51:31.480</endDateTime>
</general>
</visit>
<visit>
<general>
<startDateTime>2013-01-10T12:22:39.166</startDateTime>
<endDateTime>2013-03-11T13:51:31.480</endDateTime>
</general>
</visit>
</visits>
</logbook:LogBook>
我想从 xml 得到这个输出:
startDateTime | endDateTime |
-----------------------|-----------------------|
2014-01-10T12:22:39.166|2014-03-11T13:51:31.480|
-----------------------|-----------------------|
2013-01-10T12:22:39.166|2013-03-11T13:51:31.480|
我正在使用 minidom
,所以我写道:
import xml.dom.minidom as minidom
doc=minidom.parse('test.xml')
general=doc.getElementsByTagName('general')[0]
startDateTime=general.getAttribute('startDateTime')
print(startDateTime)
这个return空字符串给我。有什么帮助吗?
我更喜欢使用 ElementTree class:
from StringIO import StringIO
from xml.etree.ElementTree import ElementTree
et = ElementTree(None, StringIO("""<?DOMParser ?>
<logbook:LogBook xmlns:logbook="http://www/logbook/1.0" version="1.2">
<visits>
<visit>
<general>
<startDateTime>2014-01-10T12:22:39.166</startDateTime>
<endDateTime>2014-03-11T13:51:31.480</endDateTime>
</general>
</visit>
<visit>
<general>
<startDateTime>2013-01-10T12:22:39.166</startDateTime>
<endDateTime>2013-03-11T13:51:31.480</endDateTime>
</general>
</visit>
</visits>
</logbook:LogBook>"""))
for general in et.iterfind('visits/visit/general'):
start = general.findtext('startDateTime')
finish = general.findtext('endDateTime')
print start, finish
输出:
2014-01-10T12:22:39.166 2014-03-11T13:51:31.480
2013-01-10T12:22:39.166 2013-03-11T13:51:31.480