0
私は 'value'子要素のテキストをクリアしたいが、1つの空の値要素を後日。私はPythonのLXMLモジュールを使用しています。ここでPython LXMLを使用してXML要素の値を削除するが、1つのプレースホルダを残す
は、XMLセクションの例です:私は、次のコードを書かれている
<spec class="Spec" name="New Test">
<mainreport>
<item name="New Item">First Item</item>
</mainreport>
<case class="CaseItem" name="Some Name">
<extraelement>
<item name="ID">Some Id</item>
</extraelement>
<pool class="String" name="Originator">
<value></value>
</pool>
<pool class="String" name="Target">
<value></value>
</pool>
が、それは唯一の「の値を追加します。
<spec class="Spec" name="New Test">
<mainreport>
<item name="New Item">First Item</item>
</mainreport>
<case class="CaseItem" name="Some Name">
<extraelement>
<item name="ID">Some Id</item>
</extraelement>
<pool class="String" name="Originator">
<value>A</value>
<value>B</value>
<value>C</value>
</pool>
<pool class="String" name="Target">
<value>D</value>
<value>E</value>
<value>F</value>
</pool>
そして、ここでは、私が出力に期待しています何最後の要素へのタグ:
import lxml.etree as et
import os
xml_match = os.path.join("input.xml")
doc = et.parse(xml_match)
for elem in doc.xpath('//case/pool/value'):
elem.getparent().remove(elem)
blankval = et.Element("value")
blankval.text = ""
for elem in doc.xpath('//case/pool'):
elem.insert(1, blankval)
outFile = "output.xml"
doc.write(outFile)
助けてくれてありがとう@alecxe、これは今や理にかなっています。あなたが言うように、そして皮肉なことに、私はこのプロセスを2つのループに分割して作業を単純化しようとしていました。実際には私の最初の試みが妨げられました。 – MikG