2016-12-22 12 views
2

xmlファイルの解析にlxmlとpython 3.5を使用しています。lxml xmlsyntaxerror:エンティティ 'ouml'が定義されていません

私のコードは、これまでのところです:

for event, element in etree.iterparse(source, tag="article"): 
    for child in element: 
     print (child.tag, child.text) 
    element.clear() 

私はしばらく後に次のメッセージが表示されます実行する:私は定義されたすべてのエンティティとDTDファイルを抱えている

lxml.etree.XMLSyntaxError: Entity 'ouml' not defined, line 47, column 25 

。ファイルをインクルードするか、見つからないエンティティを定義するにはどうすればよいですか?

+0

ねえ、これが動作するかどうかが、 'etree.iterparse(ソース、タグ=「記事」を試すかわかりません、 dtd_load = True、dtd_verification = True、resolve_entities = True) '。 エンティティを解決したくない場合は、 'etree.iterparse(source、tag =" article "、resolve_entities = False)' – CoderBC

+0

http://lxml.de/api/lxml.etree.iterparse-class .html – CoderBC

答えて

0

は、ここに私のソリューションです: CoderBCが示唆したように、私は、検証のためのDTDファイルを読んでいる:

from lxml import etree 
from lxml.etree import XMLSyntaxError 
import sys 
import os 

source = sys.argv[1] 
dtd = etree.DTD(file=sys.argv[2])#read DTD 
count = 0 
#iterate through nodes 
for event, element in etree.iterparse(source, load_dtd=True): 
    count += 1 
    #print all children 
    for child in element: 
     print(child.tag, child.text) 
element.clear() 

print("Final Count :", count) 
関連する問題