[英]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.