.NET's XmlTextWriter
tạo tệp xml không hợp lệ.XmlTextWriter viết ký tự không chính xác
Trong XML, một số ký tự điều khiển được cho phép, như 'tab ngang' (	
), nhưng một số khác thì không, như 'tab dọc' (
). (Xem spec.)
Tôi có một chuỗi chứa ký tự điều khiển UTF-8 không được phép trong XML.
Mặc dù XmlTextWriter
thoát khỏi ký tự, kết quả XML là ofcourse vẫn không hợp lệ.
Làm cách nào để đảm bảo rằng XmlTextWriter
không bao giờ tạo ra tệp XML bất hợp pháp?
Hoặc, nếu không thể thực hiện việc này với XmlTextWriter
, làm cách nào để loại bỏ các ký tự điều khiển cụ thể không được phép trong XML từ chuỗi?
Ví dụ mã:
using (XmlTextWriter writer =
new XmlTextWriter("test.xml", Encoding.UTF8))
{
writer.WriteStartDocument();
writer.WriteStartElement("Test");
writer.WriteValue("hello \xb world");
writer.WriteEndElement();
writer.WriteEndDocument();
}
Output:
<?xml version="1.0" encoding="utf-8"?><Test>hello  world</Test>
Bạn không thể có tab dọc được thoát trong XML? Bạn có thể tham khảo các tiêu chuẩn? – Jodrell
@Jodrell Đúng vậy, bạn không thể. XML dành cho văn bản, không dành cho ký tự điều khiển hoặc dữ liệu nhị phân. http://www.w3.org/TR/REC-xml/#charsets – jasso