Я использую lxml для анализа XML-файла в python.В одном из файлов есть поле, содержащее символ «ACK».Все последующие поля не могут быть извлечены.Как я могу пропустить это поле, если оно содержит нестандартные символы, такие как «ACK», и продолжать извлекать оставшиеся поля?
<layer1>
<layer2>
<layer3>
<content><![CDATA[free-string ^F]]></content>
<field1>10</field1>
<field2>hello</field2>
</layer3>
</layer2>
</layer1>
Что у меня есть (ETA, чтобы показать больше кода):
import lxml.etree as ET
try:
try:
coding = 'utf-8'
parsing = ET.XMLParser(encoding=coding, recover=True)
tree = ET.parser(file, parser=parser)
except:
try:
coding = 'cp874'
parsing = ET.XMLParser(encoding=coding, recover=True)
tree = ET.parser(file, parser=parser)
except:
try:
coding = 'cp1252'
parsing = ET.XMLParser(encoding=coding, recover=True)
tree = ET.parser(file, parser=parser)
except:
coding = 'iso-8859-1'
parsing = ET.XMLParser(encoding=coding, recover=True)
tree = ET.parser(file, parser=parser)
node = tree.find('.//layer1/layer2/layer3/content')
if node is not None and node.text is not None:
content = node.text
field1_node = tree.find('.//layer1/layer2/layer3/field1')
field1 = field1_node.text
field2_node = tree.find('.//layer1/layer2/layer3/field2')
field2 = field2_node.text
except:
print "Cannot parse file"
Когда извлечение для content
не удалось, извлечение для field1
и field2
также не удалось (хотя все поля до content
могут быть успешно извлечены.
Как мне обработатьтакие content
?