تحویل XML دانلودشده به .NET XmlReader بهصورت جریان
جریان پاسخِ عبورکرده از پروکسی را به تحلیلگر XML بدهید، نه اینکه از آن بخواهید نشانی اصلی را دوباره دریافت کند.
کلاینت HTTP فایل XML را از طریق پروکسی درست دانلود میکند. خط بعدی یک خوانندهٔ XML از نشانی اصلی میسازد. آن خط بهجای تحلیل دادههای دانلودشده، یک دریافت دیگر را آغاز میکند.
برای کلاینتی که از قبل با مسیر موردنظر پیکربندی شده است، جریان پاسخ آن را به تحلیلگر بدهید:
using var response = await client.GetAsync(documentUri);
response.EnsureSuccessStatusCode();
using var stream = await response.Content.ReadAsStreamAsync();
var settings = new XmlReaderSettings
{
DtdProcessing = DtdProcessing.Prohibit,
XmlResolver = null
};
using var reader = XmlReader.Create(stream, settings, documentUri.AbsoluteUri);
var document = XDocument.Load(reader);
فضاهای نام مرتبط System.Xml و System.Xml.Linq هستند. این مثال پردازش DTD و حلوفصل بیرونی را عمداً غیرفعال میکند؛ راهی برای واکشی موجودیتهای بیرونی دلخواه از طریق همان کلاینت نیست.
نشانی پایه فرادادهٔ مکان سند را حفظ میکند. اگر یک گردشکار تأییدشدهٔ تحلیل یا اعتبارسنجی واقعاً شِماهای بیرونی یا وابستگیهای دیگر را واکشی کند، آن واکشیها به حلکنندهٔ صریح و طراحی مسیریابی خودشان نیاز دارند.
شکست دوم شبکه را با تغییر گذرواژهٔ نخستین کلاینتِ موفق تشخیص ندهید. روشن کنید که تحلیلگر یک جریان دریافت کرده یا یک نشانی، سپس هر منبع اضافی را جداگانه پیگیری کنید.