如何解决如何解析具有多行的不规则XML文件
我有一个名为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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。