ডাউনলোড করা XML স্ট্রিম হিসেবে .NET XmlReader-এ দিন
মূল URL আবার আনতে বলার বদলে প্রক্সি করা রেসপন্স স্ট্রিমটি XML পার্সারে দিন।
HTTP ক্লায়েন্ট সঠিক প্রক্সির মাধ্যমে XML ডাউনলোড করে। পরের লাইনটি মূল URL থেকে একটি 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 প্রসেসিং ও বাহ্যিক রিজলিউশন ইচ্ছাকৃতভাবে নিষ্ক্রিয় করে; এটি একই ক্লায়েন্টের মাধ্যমে ইচ্ছাধীন বাহ্যিক এনটিটি আনার উপায় নয়।
বেস URI নথির অবস্থান মেটাডেটা সংরক্ষণ করে। কোনো অনুমোদিত পার্সিং বা যাচাইকরণ ওয়ার্কফ্লো যদি বাহ্যিক স্কিমা বা অন্য নির্ভরতা আনে, তবে সেই সংগ্রহগুলোর জন্য নিজস্ব স্পষ্ট রিজলভার ও রাউটিং ডিজাইন দরকার।
প্রথম সফল ক্লায়েন্টের পাসওয়ার্ড বদলে দ্বিতীয় নেটওয়ার্ক ব্যর্থতা নির্ণয় করবেন না। পার্সার স্ট্রিম পেয়েছে না URL পেয়েছে তা নির্ধারণ করুন, তারপর অতিরিক্ত রিসোর্স আলাদাভাবে অনুসরণ করুন।