Zum Inhalt

list- und item-Elemente

<list>

Das <list>-Element definiert eine Sammlung von Datenelementen, wobei jedes Element seine eigenen Attribute, Schlüssel und Arrays enthalten kann. Listen sind nützlich, um strukturierte Daten darzustellen, wie beispielsweise Zeilen in einer Tabelle oder Sammlungen von Objekten mit gemeinsamen Attributen. Das <list> kann mehrere <item>-Elemente enthalten, die einzelne Einträge repräsentieren.

Attribute

  • name: Gibt den Namen der Liste an, der als Schlüssel für die Liste in den generierten Daten dienen wird. Dies ist ein obligatorisches Attribut.

Kindelemente

  • item: Das <item>-Element definiert einzelne Einträge innerhalb der Liste. Jedes Element kann seinen eigenen Satz von Attributen, Schlüsseln, verschachtelten Schlüsseln, Listen und Arrays haben.

<item>

Das <item>-Element stellt einen individuellen Eintrag innerhalb einer <list> dar. Elemente können ihre eigenen Schlüssel-Wert-Paare, verschachtelte Datenstrukturen, Arrays oder sogar andere Listen enthalten, was es dir ermöglicht, komplexe und verschachtelte Datenmodelle zu erstellen.

Attribute

  • condition: (Optional)
  • Gibt eine Bedingung an, die bestimmt, ob das Element in der generierten Ausgabe enthalten sein soll. Die Bedingung sollte zu true oder false auswerten.

Kindelemente

  • key: Definiert individuelle Schlüssel-Wert-Paare für das Element.
  • nestedKey: Ermöglicht es dir, verschachtelte Schlüssel-Wert-Paare anzugeben, um hierarchische Strukturen innerhalb eines Elements zu erstellen.
  • list: Ermöglicht verschachtelte Listen innerhalb eines Elements für komplexe Datenhierarchien.
  • array: Definiert Arrays innerhalb des Elements.

Beispiel 1: Einfache Liste mit statischen Elementen

In diesem grundlegenden Beispiel wird jedes Element in der Liste mit statischen Schlüssel-Wert-Paaren definiert.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<list name="employees">
    <item>
        <key name="first_name" constant="John"/>
        <key name="last_name" constant="Doe"/>
        <key name="position" constant="Developer"/>
    </item>
    <item>
        <key name="first_name" constant="Jane"/>
        <key name="last_name" constant="Smith"/>
        <key name="position" constant="Manager"/>
    </item>
</list>

Hier enthält die employees-Liste zwei Elemente, die zwei Mitarbeiter repräsentieren, jeweils mit first_name, last_name und position-Schlüsseln.

Beispiel 2: Liste mit dynamischem Inhalt

Du kannst Listen dynamisch generieren, indem du Generatoren oder Skripte verwendest, um die Werte zu füllen.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<list name="products">
    <item>
        <key name="product_name" script="f'Product {random.randint(1, 100)}'"/>
        <key name="price" script="random.uniform(10.0, 100.0)"/>
    </item>
    <item>
        <key name="product_name" script="f'Product {random.randint(101, 200)}'"/>
        <key name="price" script="random.uniform(50.0, 200.0)"/>
    </item>
</list>

In diesem Beispiel enthält die products-Liste zwei Elemente, bei denen die product_name und price dynamisch mit Python-Ausdrücken generiert werden.

Beispiel 3: Liste mit Arrays in Elementen

Jedes Element in einer Liste kann Arrays verwandter Daten enthalten, was es dir ermöglicht, komplexere Strukturen darzustellen.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<list name="departments">
    <item>
        <key name="name" constant="Engineering"/>
        <array name="team_members" type="string" count="3" script="['Alice', 'Bob', 'Charlie']"/>
    </item>
    <item>
        <key name="name" constant="Marketing"/>
        <array name="team_members" type="string" count="3" script="['Dave', 'Eve', 'Frank']"/>
    </item>
</list>

Hier enthält die departments-Liste zwei Abteilungen, jede mit einem Array von team_members.

Beispiel 4: Liste mit verschachtelten Strukturen

Du kannst zusätzliche Listen oder Schlüssel innerhalb von Elementen verschachteln, um hierarchische Daten zu erstellen.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<list name="companies">
    <item>
        <key name="company_name" constant="TechCorp"/>
        <nestedKey name="address">
            <key name="street" constant="123 Main St"/>
            <key name="city" constant="San Francisco"/>
            <key name="zipcode" constant="94105"/>
        </nestedKey>
        <array name="employees" script="['John Doe', 'Jane Smith']"/>
    </item>
    <item>
        <key name="company_name" constant="BizCorp"/>
        <nestedKey name="address">
            <key name="street" constant="456 Market St"/>
            <key name="city" constant="New York"/>
            <key name="zipcode" constant="10001"/>
        </nestedKey>
        <array name="employees" script="['Alice Johnson', 'Bob Brown']"/>
    </item>
</list>

In diesem Beispiel enthält die companies-Liste zwei Unternehmen, jedes mit einer verschachtelten address-Struktur und einem Array von employees.

Beispiel 5: Liste mit bedingten Elementen

Du kannst Bedingungen zu Elementen hinzufügen, um zu steuern, ob sie in der generierten Ausgabe erscheinen sollen.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<list name="users">
    <item condition="random.randint(0, 1) == 1">
        <key name="username" constant="user123"/>
        <key name="email" constant="[email protected]"/>
    </item>
    <item>
        <key name="username" constant="user456"/>
        <key name="email" constant="[email protected]"/>
    </item>
</list>

Hier enthält die users-Liste zwei Elemente, aber das erste Element wird nur einbezogen, wenn die Bedingung (random.randint(0, 1) == 1) zu true auswertet.

Beispiel 6: Liste von verschachtelten Listen

Du kannst zusätzliche Listen innerhalb von Elementen für komplexere Hierarchien verschachteln, wie zum Beispiel die Darstellung eines Unternehmens mit mehreren Abteilungen.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<list name="company">
    <item>
        <key name="name" constant="Acme Corp"/>
        <list name="departments">
            <item>
                <key name="department_name" constant="Sales"/>
                <array name="employees" script="['Alice', 'Bob']"/>
            </item>
            <item>
                <key name="department_name" constant="Engineering"/>
                <array name="employees" script="['Charlie', 'Dave']"/>
            </item>
        </list>
    </item>
</list>

In diesem Beispiel enthält die company-Liste ein Element für Acme Corp, das eine verschachtelte Liste von departments enthält, jede mit einem Array von employees.

Beispiel 7: Liste mit dynamischen Daten und Arrays

Du kannst dynamische Daten innerhalb einer Liste generieren und Arrays dynamisch innerhalb der Elemente füllen.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<list name="projects">
    <item>
        <key name="project_name" script="f'Project {random.randint(1, 10)}'"/>
        <array name="milestones" script="[f'Milestone {i}' for i in range(1, 4)]"/>
    </item>
    <item>
        <key name="project_name" script="f'Project {random.randint(11, 20)}'"/>
        <array name="milestones" script="[f'Milestone {i}' for i in range(4, 7)]"/>
    </item>
</list>

In diesem Beispiel enthält die projects-Liste zwei Projekte, jedes mit dynamisch generierten Projektnamen und Meilensteinen.

Best Practices für die Verwendung von <list>- und <item>-Elementen

  1. Bedingte Logik verwenden: Nutze das condition-Attribut in <item>, um zu steuern, welche Elemente in der Ausgabe erscheinen, was dir ermöglicht, Variabilität und Kontrolle in deinen generierten Daten hinzuzufügen.

  2. Verschachtelung für Komplexität: Kombiniere <list>, <item>, <nestedKey> und <array>-Elemente, um komplexe hierarchische Datenstrukturen wie Organisationen, Produkte oder mehrstufige Datensätze zu erstellen.

  3. Dynamische Datengenerierung: Verwende das script-Attribut innerhalb von <key>, <array> und <nestedKey>, um dynamisch Inhalte für deine Listen und Elemente zu generieren.

  4. Typenabgleich: Stelle sicher, dass die Datentypen (z.B. string, int, float, bool) in deinen Arrays und Listen dem erwarteten Format entsprechen, um Probleme in der Ausgabe zu vermeiden.

  5. Skalierbarkeit: Listen und Elemente können kombiniert werden, um große Datensätze oder komplexe Modelle zu generieren, aber eine sorgfältige Verwaltung der Skriptkomplexität und Bedingungen wird helfen, Lesbarkeit und Skalierbarkeit zu erhalten.