thể trùng lặp:
Why are “control” characters illegal in XML?
Saving an escape character 0x1b in an XML fileTại sao trình nối tiếp XML ném ngoại lệ ký tự không hợp lệ khi ký tự nằm trong CDATA?
này ném một ArgumentException:
var c = '\x1A';
var xml = new XDocument(
new XDeclaration("1.0", "utf-8", null),
new XElement("test", new XCData(c.ToString()))
);
var foo = xml.ToString(); // ArgumentException
Tại sao Net ném ngoại lệ này? Tôi đang gói các nhân vật bất hợp pháp trong CDATA, vì vậy tôi đã nghĩ rằng các nhân vật bất hợp pháp sẽ được xử lý cho tôi. Đây cũng là trường hợp cho một loạt các ký tự khác (ví dụ: 0x1B, 0x1C, 0x1E, 0x1E, 0x1F).
Bạn giải quyết vấn đề này như thế nào?
Xem các câu hỏi sau: [Lưu ký tự thoát 0x1b trong tệp XML] (http://stackoverflow.com/questions/4134438/saving-an-escape-character-0x1b-in-an-xml-file) và [Tại sao các ký tự "điều khiển" bất hợp pháp trong XML?] (Http://stackoverflow.com/questions/404107/why-are-control-characters-lang-in-xml). Workaraund sẽ sử dụng mã hóa Base64 trước khi lưu vào một XML. – oleksii
@oleksii Bạn nên biến câu trả lời này thành câu trả lời, vì đó là câu trả lời chính xác. – Bevan
@Bevan: Không, thực sự câu hỏi sẽ bị đóng là trùng lặp. –