[英]how to parse xml file with xml.dom.minidom which has characters like '%$#*^'?
[英]How to parse an irregular XML file which has multiple lines
我有一个名为 file.txt 的 XML 文件,如下所示:
<message><header><msg-date></msg-date><msg-time></msg-time><sys-id></sys-id></header><record><remittance-details></remittance-details><source-sys-id></source-sys-id></message>
<message><header><msg-date></msg-date><msg-time></msg-time><sys-id></sys-id></header><record><remittance-details></remittance-details><source-sys-id></source-sys-id></message>
<message><header><msg-date></msg-date><msg-time></msg-time><sys-id></sys-id></header><record><remittance-details></remittance-details><source-sys-id></source-sys-id></message>
<message><header><msg-date></msg-date><msg-time></msg-time><sys-id></sys-id></header><record><remittance-details></remittance-details><source-sys-id></source-sys-id></message>
<message><header><msg-date></msg-date><msg-time></msg-time><sys-id></sys-id></header><record><remittance-details></remittance-details><source-sys-id></source-sys-id></message>
我需要在将上述文件解析为文件中如下所示的标准格式后对其进行处理:
<message>
<header>
<msg-date></msg-date>
<msg-time></msg-time>
<sys-id></sys-id>
</header>
<record>
<remittance-details></remittance-details>
</record>
</message>
更新了 xml 详细信息以避免混淆。 上面显示的示例仅用于理解,因为无法在此处分享全部细节(如果缺少任何标签,请忽略)。
我编写了以下代码来解析它:
import xml.etree.ElementTree as ET
import lxml.etree as etree
import os
import sys
File_path = os.path.abspath(__file__)
BASE_DIR = os.path.dirname(File_path)
file = os.path.join(BASE_DIR,'file.txt')
parser = etree.XMLParser(recover=True)
dom = etree.parse(file,parser=parser )
xmlstr = etree.tostring(dom, pretty_print=True)
with open (file, "wb") as f:
f.write(xmlstr)
但是,它解析文件的第一行而不是解析完整的文件,因此处理失败。 因此,想了解如何解析文件中完整的 xml 行来处理它。
你有几个问题:
<root>..</root>
包裹 xml 文本来解决remittance-details
未关闭,因此它是无效的 XML。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.