0

xml データを分析しようとしていますが、使用時に HTML エンティティに関する問題が発生しました。

import xml.etree.ElementTree as ET
tree = ET.parse(my_xml_file)
root = tree.getroot()
for regex_rule in root.findall('.//regex_rule'):
  print(regex_rule.get('input')) #this ".get()" method turns &lt; into <, but I want to get &lt; as written
  print(regex_rule.get('input') == "(?&lt;!\S)hello(?!\S)") #prints out false because ElementTree's get method turns &lt; into < , is that right?

xml ファイルの内容は次のとおりです。

<rules>
<regex_rule input="(?&lt;!\S)hello(?!\S)" output="world"/>
</rules>

変換せずに、入力のxml属性から文字列をそのまま取得するように誰かに指示していただければ幸いです

&lt; 

の中へ

<
4

1 に答える 1

2

xml.etree.ElementTreeこれは、参照された文字を実際にエンコードし、そのように解釈する必要があることを理解して、XML 文字エンティティをデコードすることです。

リテラルをエンコードする必要がある場合に推奨されるアクション&lt;は、入力ファイルを&amp;lt;代わりに使用するように変更することです (つまり、 を XML エンコードします&)。

入力ファイル形式を変更できない場合は、おそらく別のモジュールを使用するか、独自のパーサーを作成する必要xml.etree.ElementTreeがあります。出力で意味のあることを行う前にエンティティを変換します。

于 2013-10-24T04:12:07.427 に答える