Я предполагаю, что вы передаете дескриптор файла следующим образом:
>>> from xml.dom.minidom import parse
>>> xmldoc = open("xmltestfile.xml", "rU")
>>> x = FuncDoc(xmldoc)
Я получаю ту же ошибку, что и вы, если я пытаюсь проанализировать один и тот же документ дважды без его закрытия-между.Попробуйте это - ошибка появляется после второй попытки разбора:
>>> xmldoc.close()
>>> xmldoc = open("xmltestfile.xml", "rU")
>>> xml1 = parse(xmldoc)
>>> xml2 = parse(xmldoc)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xml/dom/minidom.py", line 1918, in parse
return expatbuilder.parse(file)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xml/dom/expatbuilder.py", line 928, in parse
result = builder.parseFile(file)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xml/dom/expatbuilder.py", line 211, in parseFile
parser.Parse("", True)
xml.parsers.expat.ExpatError: no element found: line 1, column 0
После первого синтаксического анализа весь файл был прочитан.Затем новая попытка синтаксического анализа получает 0 данных.Я думаю, что тот факт, что документ анализируется дважды, является ошибкой в вашем коде.Если, однако, это то, что вы хотите сделать, вы можете сбросить его с помощью xmldoc.seek(0)
.