| 

.NET C# Java Javascript Exception

4
Ich möchte ein XML-Objekt erstellen. Die jeweiligen Elemente werden durch eine Id (GUID) identifiziert. Nun habe ich die Möglichkeit die Id als Element oder Attribut zu hinterlegen.
Gibt es einen Performanceunterschied bei der Suche nach einem Knoten mit einer bestimmten Id, je nachdem ob diese als Attribut oder Element hinterlegt ist?
Ist eine Vorgehensweise gebräuchlicher als die andere?
02.11.2011
Jürgen Luhr 7,1k 1 9
2 Antworten
2
Zunächst mal: "id" ist in XML ein "hervorgehobenes" Attribut mit einer dahinterliegenden Semantik (z.B. dass der Wert dokumentweit eindeutig sein muss). Je nach Kontext kannst Du es auch verwenden, um von einem Element auf ein anderes zu verweisen (das Spring-Framework macht in seinen Konfigurationsdateien z.B. davon oft Gebrauch). Wenn Deine GUIDs als solche IDs im XML-Sinn herhalten können/sollen, dann solltest Du auf jeden Fall das id-Attribut dafür verwenden.

Selbst wenn das nicht der Fall ist, Du also "id" für was anderes hernehmen willst, fände ich wegen der Ähnlichkeit zu diesem Fall ein Attribut "guid" gebräuchlicher als ein Element. Zur Frage "Attribut vs. Element" liefert Google eine Menge Treffer, die alle keine eindeutige Antwort geben. Persönlich halte ich es mit der Faustregel "Attribute für Metadaten, Elemente für Daten", d.h. in Attributen stecken Werte, die das Element bzw. die darin enthaltenen Daten näher charakterisieren. Vorausgesetzt natürlich, der abzubildende Datentyp läßt Attribute überhaupt in Frage kommen und erzwingt nicht von vornherein ein Element.

Was die Performance angeht: von gravierenden Unterschieden habe ich diesbezüglich noch nichts gehört, und es dürfte, wie so oft, von Deiner konkreten Situation abhängen: welcher Parser, wie sieht das Dokument insgesamt aus (z.B. wäre die ID als Attribut oder als Element eins unter vielen oder umgekehrt das einzige?) usw. Da hilft wohl nur: ausprobieren und messen.
02.11.2011
Matthias Hlawatsch 13,2k 4 9
Das mit "hervorgehobenen" Attribut war mir neu, passt aber gut in mein Konzept. Damit verwende ich meine GUIDs als Attribut "id".
Danke für die Hilfe.
Jürgen Luhr 02.11.2011
1
Ich persönlich hab bei mir die IDs (auch eine GUID) immer als Attribut hinterlegt. Einen Performance unterschied wird es zwischen Attributen wahrscheinlich nicht geben. Das müsste man mal mit einer ausreichend großen XML-Datei testen, aber ich glaube nicht dass man da große Unterschiede gibt. Und wenn es diese gibt, dann doch hoffentlich zu Gunsten der Attribut-Variante ;)
Mir kommt es einfach natürlicher vor die ID als Attribut zu hinterlegen. Eine Id von einem Objekt ist auch eher ein Attribut davon als ein Element.
02.11.2011
michlG 1,7k 1 5
Danke für deine Antwort. Ich werde die GUIDs als Attribut anlegen.
Jürgen Luhr 02.11.2011

Stelle deine .net-Frage jetzt!