使用Python从XML文件中提取信息?

时间:2017-05-15 16:07:13

标签: python

有人可以提供一些关于使用Python从XML文件中提取信息的帮助吗?这将是我的示例XML。

<root>
    <number index="2">
        <info>
            <info.RANDOM>Random Text</info.RANDOM>
        </info>
</root>

我想要打印的是根标签之间的信息。但是,我希望它按原样打印,这意味着所有标签,标签之间的文本和标签内的内容(在这种情况下数字索引=&#34; 2&#34;)我尝试了itertext( ),但删除标签并仅打印根标签之间的文本。到目前为止,我有一个临时解决方案,只打印出element.tag和element.text,但不会打印出结束标记和标记内容。任何帮助,将不胜感激! :)

2 个答案:

答案 0 :(得分:1)

以s作为输入,

s='''<root>
      <number index="2">
        <info>
            <info.RANDOM>Random Text</info.RANDOM>
        </info>
        </number>
</root>'''

查找标记名为number的所有标记,并使用ET.tostring()将标记转换为字符串

import xml.etree.ElementTree as ET
root = ET.fromstring(s)
for node in root.findall('.//number'):
  print ET.tostring(node)

输出:

<number index="2">
        <info>
            <info.RANDOM>Random Text</info.RANDOM>
        </info>
        </number>

答案 1 :(得分:0)

from bs4 import BeautifulSoup

xml = "<root><number index=\"2\"><info><info.RANDOM>Random Text</info.RANDOM></info></root>"
soup = BeautifulSoup(xml, "xml")

output = soup.prettify()
print(output[output.find("<root>") + 7:output.rfind("</root>")])    

+ 7帐户root>\n

相关问题