Шаг 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 ) )
Это, например, создаст случайные теги внутри другого тега.