Es gibt elementzentrisches und attributzentrisches XML, in Ihrem Beispiel ist das erste elementzentriert, das zweite ist attributzentrisch.
In den meisten Fällen sind diese beiden Muster gleichwertig, es gibt jedoch einige Ausnahmen.
Attribut zentrierte
- kleinere Größe als Element zentrisch.
- Nicht sehr interoperabel, da die meisten XML-Parser denken, dass die Benutzerdaten durch das Element dargestellt werden, Attribute werden verwendet, um das Element zu beschreiben.
- Es gibt keine Möglichkeit, für einen bestimmten Datentyp Nullwert anzuzeigen. z.B. nullable int
- Kann komplexen Typ nicht ausdrücken.
Element zentrische
- Komplexer Typ nur als Element Knoten dargestellt werden kann.
- Sehr interoperabel
- Größere Größe als Attribut zentrisch. (Kompression kann verwendet werden, um die Größe erheblich eliminiert)
- Nullable-Daten können mit dem Attribut xsi ausgedrückt werden: nil = „true“
- schneller zu analysieren, da der Parser sucht nur nach Elementen für Benutzerdaten.
Praktische
Wenn Sie über die Größe der XML wirklich interessieren, verwendet Attribut, wenn Sie können, wenn es angebracht ist, lassen Sie die NULL-Werte zulassen, komplexe Art und Knoten, die als Elemente großen Textwert halten gehend, Wenn Ihnen die Größe von XML egal ist oder Sie die Komprimierung während des Transports aktiviert haben, bleiben Sie bei den Elementen. Es ist erweiterbar.
Hintergrund
In DOT NET, XmlSerializer Eigenschaften von Objekten in entweder Attribute oder Elemente serialisiert werden können. Im kürzlich WCF-Framework, DataContract Serializer kann nur Eigenschaften in Elemente serialisieren und es ist schneller als XmlSerializer, der Grund ist offensichtlich, es muss nur nach Benutzerdaten von Elementen beim Deserialisieren suchen.
hier ein Artikel erklärt es auch Element vs attribute
Attribut-zentriertes XML hat einen großen Interoperabilitätsvorteil mit JSON. Alles, was Sie brauchen, sind ein paar Hinweise, was Sie in ein Array eingeben und was Sie als Zahl oder boolesche Zahlen behandeln können, und Sie können perfekte automatische Konvertierungen durchführen. – PstScrpt