Я использую lxml для чтения моего XML-файла. Я использую код, как показано ниже. Он отлично работает с lxml2.3 beta1, но с lxml2.3 выдает синтаксическую ошибку zn xml, как показано ниже. Я просмотрел примечания к выпуску для обеих версий, но не смог понять, что могло вызвать эту ошибку или как ее исправить. Пожалуйста, помогите, если вы сталкивались с такой вещью или имеете какие-либо подсказки по этому поводу.
Спасибо!!
Код:
from lxml import etree
def parseXml(context,attribList,elemList):
for event, element in context:
if element.tag in elemList:
#read element attributes
element.clear()
def main(object):
ns='{NS}'
attribList=['name','age','id']
elemList=[ns+'Employee',ns+'Experience',ns+'Employment',ns+'Project',ns+'Award']
context=etree.iterparse(fullFilePath, events=("start","end"))
parseXml(context,attribList,elemList)
Ошибка:
Файл "iterparse.pxi", строка 478, в lxml.etree.iterparse.далее (src/lxml/lxml.etree.c:95348) Файл "iterparse.pxi", строка 530, в lxml .etree.iterparse._read_more_events (src/lxml/lxml.etree.c:95886) Файл "parser.pxi", строка 585, в lxml.etree._raiseParseError (src/lxml/lxml.etree.c:71955) XMLSyntaxError: Префикс пространства имен по умолчанию не найден, строка 545, столбец 73
образец xml -
<root xmlns='NS'>
<Employee Name="Mr.ZZ" Age="30">
<Experience TotalYears="10" StartDate="2000-01-01" EndDate="2010-12-12">
<Employment id = "1" EndTime="ABC" StartDate="2000-01-01" EndDate="2002-12-12">
<Project Name="ABC_1" Team="4">
</Project>
</Employment>
<Employment id = "2" EndTime="XYZ" StartDate="2003-01-01" EndDate="2010-12-12">
<PromotionStatus>Manager</PromotionStatus>
<Project Name="XYZ_1" Team="7">
<Award>Star Team Member</Award>
</Project>
</Employment>
</Experience>
</Employee>
</root>
«Сотрудник» повторяется в корне. И ошибка возникает после того, как парсер прошел хоть у многих сотрудников правильно.
Редактировать 1: при захвате исключения я получаю следующее:
WARNING:NAMESPACE:NS_ERR_UNDEFINED_NAMESPACE: Namespace default prefix was not found