我有这个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>
在不同情况下,我必须得到FIG元素或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')
但最后一次印刷给了我&#34;无&#34;。
也许它可以提供帮助,但这里有我想要的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;
答案 0 :(得分:1)
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'}