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.
  • source: Spezifiziert die Quelle der Daten fĂŒr das Element. Dies kann eine Datenbank, eine Datei oder ein anderes System sein, aus dem die Daten abgerufen werden.
  • sourceScripted: Bestimmt, ob die Quelle geskriptet ist (optional). Wenn auf True gesetzt, ermöglicht es die dynamische Variablenersetzung in den Quelldaten, Ă€hnlich wie bei <generate>.
  • separator: Spezifiziert einen Separator fĂŒr das Element, der verwendet wird, wenn die Daten in einem bestimmten Format (z.B. CSV) generiert werden.
  • variablePrefix: Definiert das PrĂ€fix fĂŒr die Variablenersetzung in dynamischen Zeichenketten (Standard ist __).
  • variableSuffix: Definiert das Suffix fĂŒr die Variablenersetzung in dynamischen Zeichenketten (Standard ist __).

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.