Cho một cá thể XDocument, làm thế nào tôi có thể dễ dàng có được một TextReader đại diện cho trường hợp đó?Làm thế nào tôi có thể dễ dàng có được một TextReader từ một XDocument?
Điều tốt nhất tôi đã có thể đưa ra là một cái gì đó như thế này (nơi xml
là một ví dụ XDocument):
var s = new MemoryStream();
var sw = new StreamWriter(s);
xml.Save(sw);
sw.Flush();
s.Position = 0;
TextReader tr = new StreamReader(s);
Tuy nhiên, điều này dường như một chút phiền phức, vì vậy tôi đã tự hỏi nếu có một cách dễ dàng hơn?
Sửa
Ví dụ trên là tương đương với việc chuyển đổi toàn bộ dụ cho một chuỗi XML và sau đó tạo ra một TextReader trên chuỗi đó.
Tôi đã tự hỏi liệu có cách nào giống như luồng hơn để làm điều đó hơn là đọc toàn bộ nội dung vào bộ nhớ.
Đánh dấu - chỉ xảy ra với tôi rằng đôi khi tôi sử dụng "biến tần" cho các trường hợp một số API muốn ghi vào luồng và tôi cần đọc từ đó (ví dụ: đối với ActionResult). Điều này có thể được điều chỉnh để tạo ra một "bộ biến đổi văn bản", mà về cơ bản sẽ cung cấp cho bạn truy cập được truyền trực tiếp thông qua 'XDocument.Save', nhưng nhược điểm là nó yêu cầu một chuỗi phụ để chạy. Điều đó có giúp bạn ở đây không? – Aaronaught
@Aaronaught: Cảm ơn, nhưng đó có thể là quá nhiều để làm cho nó. Tôi chủ yếu đặt câu hỏi ra khỏi tò mò. Trong vấn đề hiện tại của tôi, tôi hy vọng sẽ phân tích cú pháp một đoạn XML nhỏ khi khởi động ứng dụng, vì vậy tôi chắc chắn có thể sống với tải toàn bộ tài liệu cùng một lúc. –
Được rồi, tôi đoán bạn đã cố gắng gửi nó qua mạng hoặc một thứ gì đó có hiệu lực. Tôi tò mò tại sao bạn cần phải làm điều này sau đó, bạn đang sử dụng một API XML mà chỉ có thể chấp nhận một 'TextReader'? – Aaronaught