如何使用IXML解析和显示Ixml对象的内容

时间:2014-08-25 10:37:32

标签: python xml-parsing lxml

我很难使用Ixml解析下面的xml _file:

>>_file= "qv.xml"

文件内容:

<document reference="suspicious-document00500.txt">
  <feature name="plagiarism" type="artificial" obfuscation="none" this_offset="128" this_length="2503" source_reference="source-document00500.txt" source_offset="138339" source_length="2503"/>
  <feature name="plagiarism" type="artificial" obfuscation="none" this_offset="8593" this_length="1582" source_reference="source-document00500.txt" source_offset="49473" source_length="1582"/>
</document>

这是我的尝试:

>>from lxml.etree import XMLParser, parse
>>parsefile = parse(_file)

>>print parsefile

Output: <lxml.etree._ElementTree object at 0x000000000642E788>

输出是ixml对象的位置,而我是在实际文件内容之后,即

Desired output={'document reference'="suspicious-document00500.txt", 'this_offset': '128', 'obfuscation': 'none', 'source_length': '2503', 'name': 'plagiarism', 'this_length': '2503', 'source_reference': 'source-document00500.txt', 'source_offset': '138339', 'type': 'artificial'}

有关如何获得所需输出的任何想法?感谢。

1 个答案:

答案 0 :(得分:1)

这是获得所需输出的一种方法:

from lxml import etree

def main():
    doc = etree.parse('qv.xml')
    root = doc.getroot()
    print root.attrib
    for item in root:
        print item.attrib

if __name__ == "__main__":
    main()

输出:

{'reference': 'suspicious-document00500.txt'}
{'this_offset': '128', 'obfuscation': 'none', 'source_length': '2503', 'name': 'plagiarism', 'this_length': '2503', 'source_reference': 'source-document00500.txt', 'source_offset': '138339', 'type': 'artificial'}
{'this_offset': '8593', 'obfuscation': 'none', 'source_length': '1582', 'name': 'plagiarism', 'this_length': '1582', 'source_reference': 'source-document00500.txt', 'source_offset': '49473', 'type': 'artificial'}

它适用于您提供的内容。 您可能需要阅读this,了解etree代表xml个对象的方式。