私はElementTreeを使用した後にlxmlを学んでいますが、なぜ.fromstringと.tostringが可逆ではないように思われます。ここに私の例があります:lxml.etree fromsting()とtostring()が同じデータを返していません
import lxml.etree as ET
f = open('somefile.xml','r')
data = f.read()
tree_in = ET.fromstring(data)
tree_out = ET.tostring(tree_in)
f2 = open('samefile.xml','w')
f2.write(tree_out)
f2.close
「somefile.xml」は132 KBでした。 'samefile.xml' - 出力は113 KBでしたが、何らかの任意の点でファイルの最後が欠けています。ツリー全体の終了タグと最後の要素のいくつかの要素がなくなりました。
私のコードに何か問題がありますか、または元のXMLファイルのネストに何か問題がありますか?もしそうなら、私はElementTreeのBeautifulSoupを(xpathなしで)再び使用する必要がありますか?
注:多くの要素の中にあるテキストには、テキストに変換されたが、この問題の原因は何ですか?
例:
<QuestionIndex Id="Perm"><Answer><![CDATA[confirm]]></Answer><Answer><![CDATA[NotConfirm]]></Answer></QuestionIndex>
<QuestionIndex Id="Actor"><Answer><![CDATA[GirlLt16]]></Answer><Answer><![CDATA[Fem17to25]]></Answer><Answer><![CDATA[BoyLt16]]></Answer><Answer><![CDATA[Mal17to25]]></Answer><Answer><![CDATA[Moth]]></Answer><Answer><![CDATA[Fath]]></Answer><Answer><![CDATA[Elder]]></Answer><Answer><![CDATA[RelLead]]></Answer><Answer><![CDATA[Auth]]></Answer><Answer><![CDATA[Teach]]></Answer><Answer><![CDATA[Oth]]></Answer></QuestionIndex>
一部のテキストデータが正しくエスケープされないことが考えられます。私はあなたの例からこれを判断することはできません。私が時々異なる言語(xmlだけでなく)の異なるxmlライブラリを使って実行している、よくある問題です。 –