簡體   English   中英

在python中解析帶有多個子元素的XML

[英]Parse XML in python with multiple childs

我有這個XML:

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
        <OCR_ERRORS_TABLE>
                <FIGURE>
                        <ELEMENT>
                                <REF>0</REF>
                                <MISREAD_CHARS>O</MISREAD_CHARS>
                        </ELEMENT>
                        <ELEMENT>
                                <REF>1</REF>
                                <MISREAD_CHARS>rilLM</MISREAD_CHARS>
                        </ELEMENT>
                        <ELEMENT>
                                <REF>6</REF>
                                <MISREAD_CHARS>G</MISREAD_CHARS>
                        </ELEMENT>
                </FIGURE>
                <LETTER>
                        <ELEMENT>
                                <REF>O</REF>
                                <MISREAD_CHARS>0</MISREAD_CHARS>
                        </ELEMENT>
                </LETTER>
        </OCR_ERRORS_TABLE>
</ROOT>

在不同情況下,我必須獲取Figure元素或LETTER。 我的問題是我不知道如何迭代元素並將REF和MISREAD_CHARS放入var。

現在這是我的python代碼,用於ElementTree lib:

configPath = 'config/ocr_errors.xml'
root = ET.parse(configPath).getroot()

if letterToFigure:
    for child in root.find('.//FIGURE//ELEMENT'):
        print child.get('REF')

但是最后一張照片給了我“ None”。

也許可以幫上忙,但這是我想要的PHP版本,可以正常工作:

$ocrErrorsTbl=simplexml_load_file($this->_working_directory_path."/config/ocr_errors.xml");
    if($letterToFigure)
        foreach($ocrErrorsTbl->OCR_ERRORS_TABLE->FIGURE->ELEMENT as $ele)
            $OCRERRTBL[(string)$ele->REF]=(string)$ele->MISREAD_CHARS;
    else
        foreach($ocrErrorsTbl->OCR_ERRORS_TABLE->LETTER->ELEMENT as $ele)
            $OCRERRTBL[(string)$ele->REF]=(string)$ele->MISREAD_CHARS;

get()返回的屬性不是子級。 您可以執行以下操作:

result = {}
if letterToFigure:
    for child in root.findall('.//FIGURE/ELEMENT'):
        ref, misread = list(child)
        result[ref.text] = misread.text

print result

返回:

{'1': 'rilLM', '0': 'O', '6': 'G'}

暫無
暫無

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

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