2012-04-10 11 views
0

私はスクリプト作成にはとても慣れていないので、私は本当にあなたの助けが必要です。 私はこれを持っているすべての奇数ラインのxmlファイルがあります。xmlファイルを編集するために別のファイルのデータを使用するスクリプト

<![CDATA[<head>Wallpaper</head><body>1328758083110.jpg</body>]]></photo> 

私が代わりに場所をテキストファイルから引き出さ何かを言うためにheadタグの間に、それぞれ「壁紙」の部分を編集できるようにしたいと思いますが各要素は改行で区切られています。

これは非常に広い質問ですので、私はすべての入力を感謝します。私はどこから始めるべきですか?

+1

をなぜCDATAセクション内のマークアップはありますか? –

+3

気にしないで、私はそれを理解しました:「名前空間は難しいです! –

答えて

1

あなたの質問を正しく理解していれば、このpythonスニペットはうまくいくはずです...私はXMLファイルに編集したい行があるのでテキストファイルに同じ数の行があり、あなたが編集したくない行のいずれにも「壁紙」はありません。そうしないとあなたが別の何かが必要な場合があります。

inFile = open('mytextfile.txt','r') 

myTextData = [] 
for line in inFile: 
    myTextData.append(line.strip()) 
inFile.close() 

inFile = open('myXMLfile.xml','r') 
outFile = open('myFinishedXMLfile.xml','w') 
currentItem = 0 
for line in inFile: 
    if 'Wallpaper' not in line: 
     outFile.write(line) 
    else: 
     left = line.find('Wallpaper') 
     right = left + 9 # Wallpaper is 9 characters 
     outFile.write(line[:left]) 
     outFile.write(myTextData[currentItem]) 
     outFile.write(line[right:]) 
     currentItem += 1 
inFile.close() 
outFile.close() 
+0

ありがとうございました。このスクリプトはほとんど動作しますが、それはmytextfile.txtの1行目から読み取っているようです。つまり、テキストファイルの下に移動するのではなく、「壁紙」のすべてのインスタンスに同じ文字列を「壁紙」の代わりに挿入します。 – user1323153

+0

おっと!カウンターを増やすのを忘れてしまった!それは恥ずかしいです... – yasashiku

0
perl -i.bak -lpe' 
    BEGIN { open $file, "<", "text-file-with-substitutions"; } 
    if (/Wallpaper/) { 
     chomp(my $subst = readline $file); 
     s/Wallpaper/$subst/ 
    } 
' xml-file-with-cdata 
関連する問題