Frage

Ich habe eine Menge von XML-Verarbeitung in C # in den letzten Zeit und nach der Rückkehr zu C # aus einem langen Stint tun Javascript Codierung ich wirklich einige der netten kurzen Schnitte von JS bin fehle.

Ich gehe habe ein beträchtliches XML-Dokument aus viel gemacht, so Elementen, untergeordneten Elemente usw. Stellvertretend für Unterkünfte / Flüge / Art der Karten für eine Online-Buchung.

Bisher habe ich nur durch das Dokument wurde Xpathing die Informationen herauszuziehen ich brauche. Ich habe jetzt begonnen Funktionen diese in Helfer zu bewegen. So könnten zum Beispiel wollen wir ändern, wie wir eine Buchung bearbeiten, wenn sie einen Flug von einem Dritten haben. Das ist einfach, mit Xpath überprüfen wir nur den Wert eines Elements überprüfen. So habe ich eine Hilfsfunktion, die nur das tut so meine XPath ist nur an einem Ort und gibt einen bool. Ich habe nur etwa ein Dutzend davon und bis jetzt habe ich als einer Buchung die ganze Sache zu behandeln, aber wir haben gerade eine Arbeit erledigt, die alle über das Flugelement der Buchung und den letzten 4 Helfer war ich habe gerade sehr Flug im Zusammenhang erstellt werden, die hat mir denken, wenn ich das richtig mache.

Ich habe die Notwendigkeit vermieden das gesamte Dokument in ein Objekt zu konvertieren, da es nur sehr, sehr schmerzhaft sein würde aufgrund seiner Größe zu tun, und zur Zeit ist es nicht erforderlich war, noch nicht wirklich ist. wäre ein großer Schmerz all diese Objekte erstellen und ich habe an ähnlichen Projekten gearbeitet, wo dieser Weg getan wurde und es tut weh, nur versucht, es zu debuggen oder initally Ihren Kopf um es zu bekommen. Wir verwenden alle Dokument nicht, wird die Verarbeitung wir nutzt dabei sind knapp 10% davon so de-Serialisierung alles ein bisschen schien over-engineered. Deserialising es in JS wäre ein Kinderspiel sein, aber C # es macht einfach so verdammt langatmig. Ich weiß, ich XSD.exe nutzen könnten einige der Schmerzen zu nehmen, aber ich finde, dass ein solches Durcheinander ohne ein gutes Schema zu verwenden (was natürlich nicht existiert).

Aber es hat mir denken, sollten wir immer eine riesige Sammlung von Objekten aus unserem XML erstellen oder ist die schnelle Weise, die ich getan habe es noch acceptible? Ich bin glücklich mit ihm, sondern nur versucht, es zu durchdenken, wenn Objekte wäre ein besserer Weg. Es haben wir es alle dann zumindest umwandeln würde es verfügbar sein einhüllen wir es in zukünftigen Projekten benötigt werden.

Ich bin mir bewusst, dass es vielleicht ein paar Kommentare werden auf der Geschwindigkeit des xpathing alles, aber seine schnell genug für das, was wir wollen, derzeit so das ist nicht ein Problem hier.

Alle Gedanken auf, wenn ich ok XPathing fortfahren?

War es hilfreich?

Lösung

Wenn Sie ein XML-Schema (XSD), dann würde ich wahrscheinlich immer die deserialize bevorzugen Ansatz einzuwenden -. Es ist nur einfacher und sauberer mit schönen CLR Objekten zu arbeiten

Wenn Sie nicht über ein XML-Schema, und nicht ein von der Quelle / Anbietern Ihrer Daten erhalten können, dann ist die Entscheidung nicht ganz klar. Wie Sie sagen, XSD.EXE können einige der Schmerz aus der Gleichung nehmen, aber eine solche abgeleitete XML-Schema ist in der Regel weder perfekt noch oft sehr hübsch.

Tough man - wenn man bei der Verwendung von XPath wohl fühlen Ihre XML zu navigieren, bleibe ich würde es. Wenn Sie XML, die Sie sehr oft analysieren müssen, vielleicht einen XSD zu schaffen wäre eine gute Idee am Ende sein.

Andere Tipps

Ja, wenn Sie nur 10% des XML benötigen, XPathing scheint wegen möglicher Deserialisierung Overkill OK, hier zu sein.

In C # 4.0 und DLR gibt es ein dynamisches Schlüsselwort, die XML-Struktur ermöglicht es, dynamisch zu erkunden.

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