2016-09-08 18 views
0

私はPythonのlxml.objectifyライブラリを使用して読んでいるXMLファイルを持っています。 (より良い方法がされてxml.comment[1]動作するようには思えないのですか?)私はコメントを取得することができるよlxml.objectifyコメントの内容を取得

<data> 
    <!--Contents 1--> 
    <some_empty_tag/> 
    <!--Contents 2--> 
</data> 

私は、XMLコメントの内容を取得する方法を見つけることではありませんよ。

xml = objectify.parse(the_xml_file).getroot() 
for c in xml.iterchildren(tag=etree.Comment): 
    print c.???? # how do i print the contets of the comment? 
    # print c.text # does not work 
    # print str(c) # also does not work 

正しい方法は何ですか。

+0

私はxmlライブラリでコメントを解析できるとは思っていません。定義上、それらはxml構造体の一部ではなく、いつでもすべてのツールで無視することができます。 – Daenyth

答えて

0

あなたはこのように、コメントを抽出するために戻って文字列に子を変換する必要があります:あなたは、不要なラッピングを除去することももちろん

In [1]: from lxml import etree, objectify 

In [2]: tree = objectify.fromstring("""<data> 
    ...: <!--Contents 1--> 
    ...: <some_empty_tag/> 
    ...: <!--Contents 2--> 
    ...: </data>""") 

In [3]: for node in tree.iterchildren(etree.Comment): 
    ...:  print(etree.tostring(node)) 
    ...: 
b'<!--Contents 1-->' 
b'<!--Contents 2-->' 

+0

私はこのようになってしまいました。 – RedX

+0

@RedX、それは確かにハックのようだが、そうではない。 '<! - comment - >'ブロックには、適切なxml/html属性設定がなく、テキストコンテンツを解析する唯一のルール/方法は、少なくともlxmlの場合と同じようにレンダリングすることです。 – Anzel

+0

私は 'contents'、' raw'、 'text'または他の関数を使って内容を得ることができることを期待していました。私はそれが単なるテキスト(AFAIK)であることを意味します。 – RedX