Runtime: TryParse zu XDocument hinzufügen

Erstellt am 15. Juni 2016  ·  3Kommentare  ·  Quelle: dotnet/runtime

Hallo, dies ist ein RFC-Problem, um Unterstützung für das Hinzufügen einer bool TryParse(string text, out XDocument document) Methode zur XDocument Klasse anzufordern.

Ich habe im Repo gesucht, aber nichts passendes gefunden. Wenn dies also ein Dupe ist, können Sie es schließen.

Problem:

Manchmal kommt es vor, dass Sie mit XML-Dateien arbeiten müssen, die aus _nicht vertrauenswürdigen_ Quellen stammen, und Sie müssen sicherstellen, dass die Datei tatsächlich wohlgeformtes XML ist.

Derzeit gibt es einige nicht so schöne Möglichkeiten , um zu überprüfen, ob ein String ein wohlgeformtes XML ist, das eine Ausnahmebehandlung beinhaltet.

Keine der vorgeschlagenen Methoden sieht nach einer sauberen Lösung für ein recht häufiges Problem aus (zumindest IMO).

Bitte beachten Sie auch , dass andere BCL - Parse(string source) bool TryParse(string source, out...) TryParse XDocument Klassen , die eine aussetzt Parse(string source) Methode in der Regel auch ein aussetzt bool TryParse(string source, out...) so das Hinzufügen einer TryParse Methode machen XDocument Klasse etwas mehr im Einklang mit andere BCL-Klassen.

Anregung:

füge die folgende Methode hinzu

bool TryParse(string text, out XDocument document)

zu XDocument und XElement Klassen

Frage:

Brauchen wir Feature-Parität mit XmlDocument Klassen?
Eigentlich macht XmlDocument LoadXml(string xml) verfügbar, also könnten wir bool TryLoadXml(string xml, out XmlDocument document) hinzufügen, aber ich mag den Namen wirklich nicht und wenn Feature-Parität kein Muss ist, würde ich es vorziehen, es nicht zu tun es hinzuzufügen.

area-System.Xml

Hilfreichster Kommentar

@weshaggard ,

Abgesehen von der Bequemlichkeit würde eine TryParse Methode es einem Entwickler ermöglichen, den Overhead zu überspringen, der mit try/catch-Blöcken und der Instanziierung eines nicht benötigten XmlException ihm/ihr vielleicht egal ist.

Auch ich war sehr überrascht, als ich feststellte, dass es eine solche Methode nicht gab. :|

Alle 3 Kommentare

Wir haben dies überprüft und verstehen den Wert des Hinzufügens einer TryParse-Methode in diesem Fall nicht vollständig. Obwohl die Konsistenz mit anderen BCL-Typen etwas interessant ist, ist sie in diesen Fällen viel nützlicher, da Sie möglicherweise viele davon parsen und es daher zu Leistungsproblemen kommt. In diesem Fall ist die Leistung kein wirkliches Problem, da die Ausnahmekosten im Vergleich zu den Kosten für das Parsen des gesamten XML-Dokuments gering sind. Auch mit den Parse-Methoden erhalten Sie eine XmlException bei Fehlern, die zusätzliche Informationen liefert, die Sie auf den Parsing-Fehler hinweisen, den Sie in den TryParse-Fällen nicht hätten.

Für ähnliche Fälle bieten die Roslyn-APIs auch keine TryParse-Methode zum Parsen einer CS-Datei, da Sie im Allgemeinen mehr Kontext zu Fehlern benötigen, aber selbst das ist möglicherweise übertrieben für das Parsen von XML-Dokumenten, weshalb wir den Mittelweg der grundlegenden Informationen in der XmlException.

Vielen Dank für das Problem und das Aufschreiben, aber aus diesen Gründen halten wir es nicht für sinnvoll, diesen eine TryParse-Methode hinzuzufügen.

@weshaggard ,

Abgesehen von der Bequemlichkeit würde eine TryParse Methode es einem Entwickler ermöglichen, den Overhead zu überspringen, der mit try/catch-Blöcken und der Instanziierung eines nicht benötigten XmlException ihm/ihr vielleicht egal ist.

Auch ich war sehr überrascht, als ich feststellte, dass es eine solche Methode nicht gab. :|

Für mich persönlich macht die Antwort von @weshaggard 0 Sinn. Imo alle Leute da draußen, die .NET länger als ein halbes Jahr verwenden, sind sich der Erklärungen im ersten Teil von @weshaggards Beitrag vollkommen bewusst. Fehler nicht im Detail zu behandeln und sich nicht darum zu kümmern, ist zumindest für mich in den letzten 20 Jahren der HAUPTgrund, eine TryParse()-Variante zu verwenden, wenn die Klasse eine bereitstellt.

Ich denke, viele Leute kamen in den letzten X Jahren bereits hierher, nachdem sie sich den Stackoverflow-Post dazu angesehen hatten, und sagten: "Oh, es gibt wirklich kein TryParse() auf XDocument. Seltsam."

Aber ... was auch immer.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen