Runtime: Tambahkan TryParse ke XDocument

Dibuat pada 15 Jun 2016  ·  3Komentar  ·  Sumber: dotnet/runtime

Hai, ini adalah masalah RFC untuk meminta dukungan untuk menambahkan metode bool TryParse(string text, out XDocument document) ke kelas XDocument .

Saya telah mencari di sekitar repo tetapi tidak dapat menemukan apa pun yang terkait, jadi jika ini adalah penipuan, silakan tutup.

Masalah:

Terkadang terjadi bahwa Anda harus bekerja dengan file XML yang berasal dari sumber _untrusted_, dan Anda harus memastikan bahwa file tersebut benar-benar berbentuk XML.

Saat ini ada beberapa cara yang tidak begitu baik untuk memverifikasi string adalah XML yang terbentuk dengan baik yang melibatkan penanganan pengecualian.

Tidak ada cara yang disarankan yang terlihat seperti solusi bersih untuk masalah yang cukup umum (setidaknya IMO).

Harap dicatat juga bahwa kelas BCL lain yang mengekspos metode Parse(string source) biasanya juga mengekspos bool TryParse(string source, out...) sehingga menambahkan metode TryParse akan membuat kelas XDocument agak lebih konsisten dengan kelas BCL lainnya.

Saran:

tambahkan metode berikut

bool TryParse(string text, out XDocument document)

ke kelas XDocument dan XElement

Pertanyaan:

Apakah kita memerlukan paritas fitur dengan kelas XmlDocument ?
Sebenarnya XmlDocument mengekspos LoadXml(string xml) sehingga kami dapat menambahkan bool TryLoadXml(string xml, out XmlDocument document) tetapi saya benar-benar tidak suka nama itu dan dengan demikian jika paritas fitur tidak harus, saya lebih suka tidak menambahkannya.

area-System.Xml

Komentar yang paling membantu

@weshaggard ,

Selain kenyamanan, metode TryParse akan memungkinkan pengembang untuk melewati overhead yang terkait dengan blok try/catch dan pembuatan instance XmlException tidak dibutuhkan yang mungkin tidak dia pedulikan.

Saya juga sangat terkejut menemukan bahwa tidak ada metode seperti itu. :|

Semua 3 komentar

Kami meninjau ini dan tidak sepenuhnya memahami nilai menambahkan metode TryParse dalam kasus ini. Meskipun konsistensi dengan tipe BCL lainnya agak menarik, hal ini jauh lebih berguna dalam kasus tersebut karena Anda berpotensi menguraikan banyak dari mereka sehingga ada masalah kinerja. Dalam hal ini kinerja tidak akan menjadi masalah karena biaya pengecualian kecil dibandingkan dengan biaya parsing seluruh dokumen XML. Juga dengan metode Parse Anda akan mendapatkan XmlException pada kesalahan yang memberikan informasi tambahan yang mengarahkan Anda ke kesalahan penguraian yang tidak akan Anda miliki dalam kasus TryParse.

Untuk kasus serupa, Roslyn API tidak menawarkan metode TryParse untuk mem-parsing file CS karena Anda biasanya menginginkan lebih banyak konteks pada kesalahan apa pun, tetapi bahkan itu mungkin berlebihan untuk mem-parsing dokumen XML itulah sebabnya kami memiliki informasi dasar di tengah Pengecualian Xml.

Terima kasih atas masalah ini dan menulisnya, tetapi untuk alasan ini kami tidak berpikir ada banyak nilai dalam menambahkan metode TryParse untuk ini.

@weshaggard ,

Selain kenyamanan, metode TryParse akan memungkinkan pengembang untuk melewati overhead yang terkait dengan blok try/catch dan pembuatan instance XmlException tidak dibutuhkan yang mungkin tidak dia pedulikan.

Saya juga sangat terkejut menemukan bahwa tidak ada metode seperti itu. :|

Bagi saya pribadi, jawaban @weshaggard masuk akal. Imo semua ppl di luar sana, menggunakan .NET selama lebih dari setengah tahun, benar-benar menyadari penjelasan di bagian pertama dari posting @weshaggard. Tidak menangani dan tidak mempedulikan kesalahan secara detail adalah, setidaknya bagi saya dalam 20 tahun terakhir, alasan UTAMA, untuk menggunakan varian TryParse(), jika kelas menyediakannya.

Saya pikir banyak ppl sudah datang ke sini dalam X tahun terakhir, setelah melihat posting stackoverflow tentang hal itu, dan pergi seperti "oh. benar-benar tidak ada TryParse() di XDocument. aneh."

Tapi apa pun.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

chunseoklee picture chunseoklee  ·  3Komentar

jzabroski picture jzabroski  ·  3Komentar

matty-hall picture matty-hall  ·  3Komentar

sahithreddyk picture sahithreddyk  ·  3Komentar

jkotas picture jkotas  ·  3Komentar