簡體   English   中英

使用異常處理以最少的方式進行Python XML解析

[英]Python XML Parsing With Minidom Using Exception Handling

我正在剝離幾百萬個敏感數據的XML。 我該如何添加嘗試,但要解決這個錯誤,因為幾個錯誤的xmls出現了,這似乎已經發生了。

xml.parsers.expat.ExpatError:標記不匹配:第1行,第28691列

#!/usr/bin/python
import sys
from xml.dom import minidom

def getCleanString(word):
        str = ""
        dummy = 0
        for character in word:
                try:
                        character = character.encode('utf-8')
                        str = str + character
                except:
                        dummy += 1
        return str

def parsedelete(content):

        dom = minidom.parseString(content)

        for element in dom.getElementsByTagName('RI_RI51_ChPtIncAcctNumber'):
                parentNode = element.parentNode
                parentNode.removeChild(element)

        return dom.toxml()


for line in sys.stdin:
        if line > 1:
                line = line.strip()
                line = line.split(',', 2)
                if len(line) > 2:
                        partition = line[0]
                        id = line[1]
                        xml = line[2]
                        xml = getCleanString(xml)
                        xml = parsedelete(xml)
                        strng = '%s\t%s\t%s' %(partition, id, xml)
                        sys.stdout.write(strng + '\n')

捕獲異常很簡單。 import xml添加到您的import語句中,然后將問題代碼包裝在try / except處理程序中。

def parsedelete(content):
        try:
            dom = minidom.parseString(content)
        except xml.parsers.expat.ExpatError, e:
            # not sure how you want to handle the error... so just passing back as string
            return str(e)

        for element in dom.getElementsByTagName('RI_RI51_ChPtIncAcctNumber'):
                parentNode = element.parentNode
                parentNode.removeChild(element)

        return dom.toxml()

暫無
暫無

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

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