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.
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.
tambahkan metode berikut
bool TryParse(string text, out XDocument document)
ke kelas XDocument
dan XElement
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.
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.
Komentar yang paling membantu
@weshaggard ,
Selain kenyamanan, metode
TryParse
akan memungkinkan pengembang untuk melewati overhead yang terkait dengan blok try/catch dan pembuatan instanceXmlException
tidak dibutuhkan yang mungkin tidak dia pedulikan.Saya juga sangat terkejut menemukan bahwa tidak ada metode seperti itu. :|