Не удалось разобрать xml-файл с lxml - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь проанализировать XML-файл, в котором есть & include; в нем, но он терпит неудачу

Файл начинается с

<!DOCTYPE gdml [
        <!ENTITY materials SYSTEM "materialsOptical.xml"> 
        <!ENTITY solids SYSTEM "solids.xml"> 
        <!ENTITY matrices SYSTEM "matrices.xml">
]>


<gdml xmlns:gdml="http://cern.ch/2001/Schemas/GDML"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema/gdml.xsd">


<define>
<constant name="PI" value="1.*pi"/>
&matrices;

И используемый код:

from lxml import etree
    #root = etree.fromstring(currentString)
    parser = etree.XMLParser(resolve_entities=True)
    root = etree.parse(filename, parser=parser)

Но я получаю ошибку

 File "/usr/share/freecad/Mod/GDML/importGDML.py", line 702, in processGDML
    root = etree.parse(filename, parser=parser)
   File "src/lxml/etree.pyx", line 3426, in lxml.etree.parse
   File "src/lxml/parser.pxi", line 1839, in     lxml.etree._parseDocument
   File "src/lxml/parser.pxi", line 1865, in lxml.etree._parseDocumentFromURL
   File "src/lxml/parser.pxi", line 1769, in lxml.etree._parseDocFromFile
   File "src/lxml/parser.pxi", line 1162, in lxml.etree._BaseParser._parseDocFromFile
  File "src/lxml/parser.pxi", line 600, in lxml.etree._ParserContext._handleParseResultDoc
  File "src/lxml/parser.pxi", line 710, in lxml.etree._handleParseResult
  File "src/lxml/parser.pxi", line 639, in  lxml.etree._raiseParseError
<class 'lxml.etree.XMLSyntaxError'>: Failure to process entity matrices, line 14, column 11 (detector.gdml, line 14)

1 Ответ

0 голосов
/ 29 июня 2019

Хорошо, я скачал файл matrices как matrices.gdml, где родительский файл называл его matrices.xml.

Работает сейчас

...