Étape 1. définir un modèle pour les éléments répétitifs dans le XML.
t= string.Template("""<sometag><data>${data}</data><moredata>${moredata}</moredata></sometag>""")
Étape 2. Générez des valeurs aléatoires.
import random
args = dict(
data = random.random(),
moredata= random.random()
)
Étape 3. Insérez des valeurs aléatoires dans le modèle.
t.substitute(**args)
Vous pouvez, sans trop de travail, générer facilement beaucoup de données XML aléatoires. Vous voulez des noms au lieu de chiffres?
def random_name(size=8):
return "".join(random.choice(string.ascii_letters) for x in range(size))
Voulez-vous des noms de longueur variable?
def random_variable_len_name(mean_size= 8, std_size= 2):
size= int(random.gauss(mean_size, std_size))
return random_name(size)
Les possibilités sont infinies et très simples à mettre en œuvre.
Random JSON est encore plus facile.
import json
import random
args = dict(
data = random.random(),
moredata= random.random()
)
json.dumps([args])
Si "aléatoire" vous embrouille, considérez ceci.
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))
Cela, par exemple, va créer des étiquettes aléatoires dans une autre étiquette.
Ce ne sont pas seulement les valeurs qui devraient être aléatoires, mais aussi la structure arborescente. (Éléments avec des nombres aléatoires d'éléments enfants, et chaque enfant avec un nombre aléatoire d'éléments enfants, etc.) –
@sprocketonline: Il est facile de créer des modèles pour divers fragments XML et de les combiner dans des ordres aléatoires ou avec des éléments aléatoires présents ou non présents . –