我在一个文件夹中有多个xml文件。我想解析所有的xml文件。我尝试过minidom解析但是我做不到。这里的xml文件就像 -
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="frame.xsl"?>
<frame cBy="KmG" cDate="03/05/2008 03:50:35 PST Wed" name="Abandonment" ID="2031" xsi:schemaLocation="../schema/frame.xsd" xmlns="http://framenet.icsi.berkeley.edu" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<definition><def-root>An <fex name="Agent">Agent</fex> leaves behind a <fex name="Theme">Theme</fex> effectively rendering it no longer within their control or of the normal security as one's property.
<ex><fex name="Agent">Carolyn</fex> <t>abandoned</t> <fex name="Theme">her car</fex> and jumped on a red double decker bus.</ex>
<ex>Perhaps <fex name="Agent">he</fex> <t>left</t> <fex name="Theme">the key</fex> in the ignition</ex>
<ex><t>Abandonment</t> <fex name="Theme">of a child</fex> is considered to be a serious crime in many jurisdictions.</ex>
</frame>
我在下面的代码中尝试了这个 - 我想只采用ex。
之间的界限from helperDef import *
import os
from xml.dom import minidom
for root, dirs, files in os.walk('frame'):
for file in files:
if (file.endswith('.xml')):
xmldoc = minidom.parse(os.path.join(root, file))
if '<ex>' in xmldoc:
line = find_between(xmldoc, '<ex>', '</ex>')
print(line)
clean_line = cleanText(line)
print(clean_line)
错误是 -
TypeError:“Document”类型的参数不可迭代
任何方法都可以做到这一点?帮助!
答案 0 :(得分:0)
我认为在python中解析xml更好的方法是使用xmltodict
你只需要:
import xmltodict
然后:
data = xmltodict.parse(xml)
然后你的xml文件被转换为python dict,你可以轻松地工作。在你的情况下,你可以运行一个循环将所有文件转换为dicts。
答案 1 :(得分:0)
您还可以使用xml.etree:
来使用解析xml文件
sessionStorage