使用Python和xml.etree.ElementTree解析xml文件
来源:互联网 发布:在线模拟装机软件 编辑:程序博客网 时间:2024/05/21 08:26
使用Python解析xml文件的文章很多,确实也很简单,但是当文件中含有命名空间名的时候,许多文章中给出的例子就无法工作了,其实解决这一问题也很简单,只需加上一行正则就可以了!
欢迎给出意见和批评!
程序代码:
#!/usr/bin/python
import sys
import re
import xml.etree.ElementTree as ET
def parseOptions ():
if len(sys.argv) < 2:
print """
USAGE:
python program.py file
"""
sys.exit(1)
else:
filename = sys.argv[1]
return filename
def main ():
filename = parseOptions()
root = ET.parse(filename).getroot()
r = re.compile('({.+})')
xmlns = r.search(root.tag).group(1)
for node in root:
IdList = xmlns + 'IdList'
if re.match(IdList, node.tag):
for child in node:
if child.tag.find('Id'):
print child.text
if __name__ == '__main__':
main()
XML文件:
<eSearchResult xmlns="http://www.ncbi.nlm.nih.gov/soap/eutils/esearch">
<Count>329</Count>
<RetMax>20</RetMax>
<RetStart>0</RetStart>
<IdList>
<Id>18371695</Id>
<Id>18353787</Id>
<Id>18337261</Id>
<Id>18312416</Id>
<Id>18302187</Id>
<Id>18232994</Id>
<Id>18231669</Id>
<Id>18223291</Id>
<Id>18085574</Id>
<Id>18058769</Id>
<Id>18056069</Id>
<Id>17984965</Id>
<Id>17968707</Id>
<Id>17939156</Id>
<Id>17916468</Id>
<Id>17875870</Id>
<Id>17768677</Id>
<Id>17763598</Id>
<Id>17699872</Id>
<Id>17695722</Id>
</IdList>
<TranslationSet>
</TranslationSet>
<TranslationStack>
<TermSet>
<Term>taverna[All Fields]</Term>
<Field>All Fields</Field>
<Count>329</Count>
<Explode>Y</Explode>
</TermSet>
<OP>GROUP</OP>
</TranslationStack>
<QueryTranslation>taverna[All Fields]</QueryTranslation>
</eSearchResult>
转自:http://blog.chinaunix.net/space.php?uid=20683570&do=blog&id=1573019
欢迎给出意见和批评!
程序代码:
#!/usr/bin/python
import sys
import re
import xml.etree.ElementTree as ET
def parseOptions ():
if len(sys.argv) < 2:
print """
USAGE:
python program.py file
"""
sys.exit(1)
else:
filename = sys.argv[1]
return filename
def main ():
filename = parseOptions()
root = ET.parse(filename).getroot()
r = re.compile('({.+})')
xmlns = r.search(root.tag).group(1)
for node in root:
IdList = xmlns + 'IdList'
if re.match(IdList, node.tag):
for child in node:
if child.tag.find('Id'):
print child.text
if __name__ == '__main__':
main()
XML文件:
<eSearchResult xmlns="http://www.ncbi.nlm.nih.gov/soap/eutils/esearch">
<Count>329</Count>
<RetMax>20</RetMax>
<RetStart>0</RetStart>
<IdList>
<Id>18371695</Id>
<Id>18353787</Id>
<Id>18337261</Id>
<Id>18312416</Id>
<Id>18302187</Id>
<Id>18232994</Id>
<Id>18231669</Id>
<Id>18223291</Id>
<Id>18085574</Id>
<Id>18058769</Id>
<Id>18056069</Id>
<Id>17984965</Id>
<Id>17968707</Id>
<Id>17939156</Id>
<Id>17916468</Id>
<Id>17875870</Id>
<Id>17768677</Id>
<Id>17763598</Id>
<Id>17699872</Id>
<Id>17695722</Id>
</IdList>
<TranslationSet>
</TranslationSet>
<TranslationStack>
<TermSet>
<Term>taverna[All Fields]</Term>
<Field>All Fields</Field>
<Count>329</Count>
<Explode>Y</Explode>
</TermSet>
<OP>GROUP</OP>
</TranslationStack>
<QueryTranslation>taverna[All Fields]</QueryTranslation>
</eSearchResult>
转自:http://blog.chinaunix.net/space.php?uid=20683570&do=blog&id=1573019
0 0
- 使用Python和xml.etree.ElementTree解析xml文件
- python-xml.etree.ElementTree解析xml文件
- python xml.etree.ElementTree解析
- python xml.etree ElementTree解析 编辑 xml
- python XML解析--xml.etree.ElementTree
- [ZT]Python使用xml.etree.ElementTree操作xml文件
- xml.etree.ElementTree 使用
- Python xml.etree.ElementTree 用法
- python学习之 -- xml.etree.ElementTree解析xml
- Python读取xml文件(xml.etree.ElementTree)
- python类库31[使用xml.etree.ElementTree读写xml]
- python类库[使用xml.etree.ElementTree读写xml]
- [python]使用xml.etree.ElementTree遍历xml所有节点
- 68.[Python]使用xml.etree.ElementTree操作XML
- Python之使用ElementTree解析xml文件
- 使用Python库ElementTree解析XML文件
- Python中使用ElementTree解析XML文件
- python使用ElementTree解析XML文件
- python数组交集、并集与不同
- python数组交集、并集与不同
- python Word 编程
- eclipse新建python项Project interpreter not specified
- python 调用word打开doc文档报错,“word无法启动转换器mswrd632.wpc”
- 使用Python和xml.etree.ElementTree解析xml文件
- mysql中limit的查询优化,千万级也能轻松搞定
- python的xml库操作读写文件真是慢的无语,跟直接操作文本型的操作真不是一个级别的
- 替换xml中的非法字符及不可见字符
- linux中强大的screen命令
- 用Python生成不依赖dll的exe的操作步骤简介
- 花生壳与MDaemon架设邮件服务器案例图文教程
- 《编程珠玑》阅读小记(11) — 堆
- avformat_find_stream_info