Frage

Welche Konvention bevorzugt würde und warum (gehören einige Vor-und Nachteile des einen über den anderen)?

Dieses:

<company>
    <employees>
        <employee />
        <employee />
        <employee />
    </employees>
    <buildings>
        <building />
        <building />
    </building>
</company>

oder folgt aus:

<company>
    <employee />
    <employee />
    <employee />
    <building />
    <building />
</company>
War es hilfreich?

Lösung

Es gibt keine semantischen Gründen explizite Darstellung der Sammlung durch ein bestimmtes Element zu haben. Am Ende haben beide Dokumente die gleiche Bedeutung - sie ein Unternehmen mit allen Mitarbeitern und Gebäude darstellen

.

Allerdings gibt es zusätzliche Vorteile das erste Beispiel bietet:

  • es besser lesbar ist und kann von umreißt in Editoren profitieren.
  • Sie können strenges Schema erstellen
  • es ist einfacher, serialisiert zu stark typisierte Sammlungen
  • Sie können Attribute auf dem Sammelelement angeben, die auf alle Elemente innerhalb
  • anwenden

Auf der anderen Seite, das zweite Beispiel hat auch einige Vorteile seiner eigenen (obwohl ich finde, tun diese fragwürdigen mindestens):

  • ist weniger gesprächig / weniger Speicher
  • ist einfacher Prozess, durch Nicht-XML-Tools

Andere Tipps

Im Allgemeinen, wenn sie mit XML in der Programmierung zu tun, wollen Sie es oft, um Objekte zu übersetzen, dass Ihr Programm verwenden kann. Die meisten XML-Serializer Elemente nehmen Eigenschaften des übergeordneten Elements darzustellen.

Wenn Sie gruppieren wie in Ihrem Beispiel oben, Serializer, dass als eine einzige Sammlung oder Array-Eigenschaft interpretieren kann. In diesem Fall würden Sie einen Company haben, die eine Employees Eigenschaft hat, die eine Sammlung von Employee Objekten ist.

Wenn Sie ihm die zweite Art und Weise tun, werden Sie mit einem Company Objekt mit Eigenschaften, genannt „Employee“, „Employee2“, „Employee3“ oder etwas ähnliches landen. Wenn Sie das Programmieren, das kein gutes Objekt-Design ist.

Gibt es Attribute oder Daten, die Sie könnte möglicherweise auf alle Mitarbeiter in einer Gruppe anhängen? Ich würde normalerweise für das erste Beispiel gehen (ein Gruppierungselement), da es Ihnen die Freiheit,

gibt
  1. Erstellen mehrerer Gruppen
  2. anhängen Daten an die Gruppe als Ganzes

Es ist ein wenig ausführlicher, aber kauft man viel mehr Flexibilität geht nach vorne.

Um Ihre Frage mit einer Frage zu beantworten ... Wie Gruppierung Elemente beeinflussen die Lesbarkeit, sowohl visuell als auch programmatisch?

Das gruppiert Methode (mit dem <employees> und <buildings>) ist mehr visuell.

Die nicht-gruppierte Methode ist etwas prägnanter für eine XPath-Abfrage, /company/employees/employee vs. /company/employee.

So kann es 6 sein, ein halbes Dutzend der anderen.

ich es durch Denken nähern würde, welche Daten Sie repräsentieren.

In C #, ich sehe dies:

// Top Example:
public class Company
{
  public Employee[] employees;
  public Building[] buildings;
}

// Vs. Bottom Example:
public Things[] employeesAndBuildings;

Logisch, Gebäude und Mitarbeiter sind nicht das Gleiche. Da Ihr Unternehmen mehrere Gebäude und mehrere Mitarbeiter hat, sollten Sie logisch die beiden Gruppen trennen.

Das zweite Beispiel ist kürzer und je nachdem, was in das Format liest, kann der Leser ebenso leicht, die beiden Elemente trennen. Zur besseren Lesbarkeit allerdings kann das Format mehr lesbar erhalten, wenn die Dinge in einer anderen Reihenfolge gehen:

<company>
    <employee />
    <building />
    <employee />
    <building />
    <employee />
</company>

ich das erste Format gehen würde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top