1

すべての子を含むXML要素のテキスト情報のMD5ハッシュをチェックしようとしています。これは、hipayサービスと対話するために必要です。

def CheckMD5(tree):
    m = hashlib.md5()
    body = tree.find('result')
    m.update(ET.tostring(ET.ElementTree(body).getroot(), method="html"))

    return tree.find('md5content').text == m.hexdigest()

完全なコード: https ://github.com/fabiosantoscode/python-hipay/blob/master/hipay.py#L566

ElementTree.tostring私の問題は、 withを呼び出すとmethod="xml"、ElementTreeが空の要素の終了タグを折りたたむが、使用するmethod="html"と大文字が失われることです。例:

>>> ET.tostring(ET.fromstring('<rt><a></a><CapName>asd</CapName></rt>'), method='xml')
'<rt><a /><CapName>asd</CapName></rt>'
>>> ET.tostring(ET.fromstring('<rt><a></a><CapName>asd</CapName></rt>'), method='html')
'<rt><a></a><CapName>asd</capname></rt>'
>>>

ノート:

このXMLドキュメントを変更する必要はまったくありません<result>。要素の文字列データを抽出するだけです。私がこれを行うことを可能にする他の図書館がある場合は、示してください。

4

1 に答える 1

1

LH.tostring終了タグを折りたたまない:

In [34]: import lxml.etree as ET

In [35]: import lxml.html as LH

In [36]: LH.tostring(ET.fromstring('<rt><a></a><CapName>asd</CapName></rt>'))
Out[36]: '<rt><a></a><CapName>asd</CapName></rt>'
于 2013-03-19T16:22:19.450 に答える