用xmltodict解析XML文件


=Start=

缘由:

最近一段时间在使用Masscan这个超级端口扫描器做扫描,扫描完了之后就是数据处理和分析,一般情况下都是用XML文件来存放扫描结果(虽然说我自己更偏向于用list格式存放结果),比如:scantastic-tool 这个工具是用Python写的,调用Masscan/Nmap进行端口扫描,然后用xmltodict这个模块解析产生的XML文件,并将解析结果导入ElasticSearch,最后用Kibana进行展示。因为感觉解析XML文件的功能是很常用的,所以去学习了一下xmltodict模块的使用方法,感觉挺不错的。

参考解答:

#将XML解析成OrderedDict

import xmltodict, json

myxml = """<mydocument has="an attribute">
  <and>
    <many>elements</many>
    <many>more elements</many>
  </and>
  <plus a="complex">
    element as well
  </plus>
</mydocument>"""

myxml_dict = xmltodict.parse(myxml)  #用 parse 进行解析
print json.dumps(myxml_dict)  #解析后的内容可以直接用json.dumps处理
print myxml_dict['mydocument']['@has']            # == u'an attribute'  「@开头的是指Element的属性」
print myxml_dict['mydocument']['and']['many']   # == [u'elements', u'more elements']
print myxml_dict['mydocument']['plus']['@a']      # == u'complex'
print myxml_dict['mydocument']['plus']['#text']   # == u'element as well'  「#开头的是指Element的值」

#将dict转换成XML格式的字符串

mydict = {
    'text': {
        '@color':'red',
        '@stroke':'2',
        '#text':'This is a test'
    }
}

mydict_xml = xmltodict.unparse(mydict, pretty=True)  #用 unparse 可以将dict转换成XML格式的字符串
print mydict_xml
"""
<?xml version="1.0" encoding="utf-8"?>
<text stroke="2" color="red">This is a test</text>
"""
print xmltodict.unparse(mydict, pretty=True)
参考链接:

=END=

,

《“用xmltodict解析XML文件”》 有 1 条评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注