1

私はプログラミングとPythonに非常に慣れていません。XML ファイル内のテキストを検索して置換しようとしています。ここに私のxmlファイルがあります

<?xml version="1.0" encoding="UTF-8"?>
<!--Arbortext, Inc., 1988-2008, v.4002-->
<!DOCTYPE doc PUBLIC "-//MYCOMPANY//DTD XSEIF 1/FAD 110 05 R5//EN"
 "XSEIF_R5.dtd">
<doc version="XSEIF R5"
xmlns="urn:x-mycompany:r2:reg-doc:1551-fad.110.05:en:*">
<meta-data></meta-data>
<front></front> 
<body>
<chl1><title xml:id="id_881i">Installation</title>
<p>To install SDK, perform the tasks mentioned in the following
table.</p>
<p><input>ln -s /sim/<var>user_id</var>/.VirtualBox $home/.VirtualBox</input
></p>
</chl1>
</body>
</doc>
 <?Pub *0000021917 0?>

「仮想ボックス」のすべてのエントリを「Xen」に置き換える必要があります。このために、Elementtree を試しました。しかし、ファイルを置き換えて書き戻す方法がわかりません。これが私の試みです。

import xml.etree.ElementTree as ET
tree=ET.parse('C:/My_location/1_1531-CRA 119     1364_2.xml')
doc=tree.getroot()
iterator=doc.getiterator()
 for body in iterator:
    old_text=body.replace("Virtualbox", "Xen")

テキストは body の下の多くのサブタグで利用できます。サブ要素を削除して新しい要素を追加する方法を取得しましたが、テキストのみを置き換えることはできませんでした。

4

2 に答える 2

1

テキスト、テール属性を置き換えます。

import lxml.etree as ET

with open('1.xml', 'rb+') as f:
    tree = ET.parse(f)
    root = tree.getroot()
    for elem in root.getiterator():
        if elem.text:
            elem.text = elem.text.replace('VirtualBox', 'Xen')
        if elem.tail:
            elem.tail = elem.tail.replace('VirtualBox', 'Xen')

    f.seek(0)
    f.write(ET.tostring(tree, encoding='UTF-8', xml_declaration=True))
    f.truncate()
于 2013-07-29T09:06:38.990 に答える
0

おそらく最も簡単な方法は、次のようにすることです。

ifile = open('input_file','r')
ofile = open('output_file','w')
for line in ifile.readlines():
  ofile.write(line.replace('VirtualBox','Xen'))
ifile.close()
ofile.close()
于 2013-07-29T09:21:11.293 に答える