0
2

More than 3 years have passed since last update.

【Pythonで作ってみた】XMLデータ増殖ツール

Last updated at Posted at 2020-08-13

テストデータを楽に作成したいので、大量のテストデータ作成用ツールをpythonで作成しました。
具体的にはtsvにファイル名とファイルの内容を格納しておき、これを読み込んで、xmlのテンプレートの対象のタグだけ書き換えて一括でテスト用のxmlファイルを出力するものです。

入力ファイルの準備

1.sample.tsv(出力する際のファイル名と書き換え部分の配列)
 入力ファイルのサンプルです。

FILENAME    SENTENCE
sample_1.xml    ice cream
sample_2.xml    chocolate box
sample_3.xml    candy bar

2.templete.xml(出力するための元ネタとなるXML)
 出力用テンプレートのサンプルです。

<root>
  <Text>sweets</Text> 
  <originalText>sweets</originalText> 
  <head>sweets</head> 
</root>

XMLデータ一括出力用ツールのソース

3.exportToXML.py

#!/usr/bin/env python 
import csv 
import xml.etree.ElementTree as ET 
import shutil 
import os 
import glob 


#出力フォルダの初期化 
for file in glob.glob('C:\\tools\\output\\*.xml', recursive=True):
    os.remove(file) 

#変数の宣言ファイル名と書き換えのワードを取得 
#ファイル名 
fName = "" 
#と書き換えのワード 
fDoc = "" 

#インプットとなるtsvファイルを開く 
tsv_file = open(r"C:\\tools\sample.tsv", "r", encoding="utf-8", errors="", newline="" ) 
#リーダーでファイルを解析する 
f = csv.reader(tsv_file, delimiter="\t", doublequote=True, lineterminator="\n", quotechar='"', skipinitialspace=True) 
data = [ v for v in f] 

for i in range(len(data)): 
    #ヘッダーは読み込まない 
        if i > 0: 
            fName = (data[i][0]) 
            fDoc = (data[i][1]) 
            fPath = 'C:\\tools\\output\\' + fName 
            #テンプレ―トをコピーする。 
            shutil.copy('C:\\tools\\templete.xml',fPath) 
            tree = ET.parse(fPath) 
            root = tree.getroot() 
            for name in root.iter('text'): 
                name.text = fDoc 
                print(name.text)
            for hname in root.iter('head'): 
                hname.text = fName 
            tree.write(fPath, encoding='UTF-8') 


実行方法

4.上記のファイル(sample.tsv、templete.xml)をC:\toolsに配置し、その配下にoutputフォルダを作成します。
  py7.png

 python実行環境で3のソースを実行してください。
 環境作成・実行方法はこちらにまとめてあります。
 ■Python(anaconda)の開発環境構築手順(SpringToolsSuites )_2020.6時点

出力結果

tsvファイルの一覧の通り、テンプレートの内容を変更して一括でファイルを出力する事ができました。
  py8.png

以上です。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2