簡體   English   中英

如何解析具有多行的不規則 XML 文件

[英]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 行來處理它。

你有幾個問題:

  1. 您的文檔中沒有根。 這可以通過用<root>..</root>包裹 xml 文本來解決
  2. 標簽remittance-details未關閉,因此它是無效的 XML。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM