ステップ1. XMLの繰り返し要素のテンプレートを定義します。
t= string.Template("""<sometag><data>${data}</data><moredata>${moredata}</moredata></sometag>""")
ステップ2.ランダム値を生成します。
import random
args = dict(
data = random.random(),
moredata= random.random()
)
ステップ3.ランダムな値をテンプレートに挿入します。
t.substitute(**args)
多くの作業をせずに、たくさんのランダムなXMLを簡単に生成できます。数字の代わりに名前を付けたいですか?
def random_name(size=8):
return "".join(random.choice(string.ascii_letters) for x in range(size))
可変長の名前が必要ですか?
def random_variable_len_name(mean_size= 8, std_size= 2):
size= int(random.gauss(mean_size, std_size))
return random_name(size)
可能性は無限であり、実装が非常に簡単です。
ランダムなJSONはさらに簡単です。
import json
import random
args = dict(
data = random.random(),
moredata= random.random()
)
json.dumps([args])
"ランダム" は、あなたを混乱させる場合は、これを考慮してください。
t1 = string.Template("""<sometag>${body}</sometag>""")
t2 = string.Template("""<othertag attr="$attr">$data</othertag>""")
t3 = string.Template("""<moretag attr="$attr">$data</moretag>""")
elements = random.randint(0,4)
body= [ random.choice([t2,t3]).substitute(attr=random.random(), data= random_name()) for x in range(elements) ]
t1.substitute(body="".join(body))
たとえば、別のタグ内にランダムタグを作成します。
ランダムでなければならない値だけでなく、ツリー構造も値です。 (子要素の乱数を持つ要素、子要素の乱数を持つ各子) –
@sprocketonline:さまざまなXML断片のテンプレートを作成し、それらをランダムな順序で、またはランダムな要素が存在するか存在しない状態で結合するのは簡単です。 –