Python的XML元素树可能存在的错误?

2024-09-30 16:42:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python代码中遇到了一个奇怪的错误,其中元素树库没有提取XML文件中的文本,请考虑以下场景:

<user.ISOCountryCode>UK</user.ISOCountryCode>
<user.RegistrationDate>2013-10-16T12:51:36Z</user.RegistrationDate>
<user.PK>16318168107</user.PK>

使用与下面类似的代码,用户.PK因为某个子句从未被提取,而是返回一个None,文本肯定存在于XML中,总是同一个元素有这个问题,有没有解决这个错误的方法?公司名称:

^{pr2}$

Tags: 文件代码用户文本元素错误场景xml
1条回答
网友
1楼 · 发布于 2024-09-30 16:42:00

结果是我在根上迭代并在应该迭代子元素的时候删除它,这是我找到的工作版本

def convertXMLInterparse(xmlLoc,elementName,keyTag,file,primeKey):  
    key = ''
    pk = ''
    data={}
    context = ET.iterparse(xmlLoc,events=("start", "end"))
    context = iter(context)
    event,root = context.next()
    for event, topElement in context:
        try:
            if primeKey in topElement.tag:
                pk = topElement.text        
            if event == "end" and topElement.tag == elementName:
                for element in topElement:
                    elementText = ''
                    if element.text:
                        elementText = element.text.replace('"','')
                        elementText = elementText.replace('|','')
                    else:
                        elementText = element.text
                    data[element.tag] = elementText
                    if element.tag == keyTag:
                        key = elementText
                    for subElement in element:
                        subElementText = ''
                        if subElement.text:
                            subElementText = subElement.text.replace('"','')
                            subElementText = subElementText.replace('|','')
                        else:
                            subElementText = subElement.text
                            data[subElement.tag] = subElementText

                            if subElement.tag == keyTag:
                                key = str(subElementText)
                            subElement.clear()
                        element.clear()
                    topElement.clear()
                    if len(data) > 0 and key and pk:
                        result = json.dumps(data)
                        data.clear()
                        file.write(pk + "|" +  key + "|" +  result + "\n")
                root.clear()
            except Exception as e:
                jeetl.log("exception in convertXMLInterparse " + str(e) + "\n" + "string  : "  + " File " + xmlLoc ,True)
                continue

相关问题 更多 >