Có cách nào để xuất nội dung của một XDocument không có BOM không? Khi đọc đầu ra bằng Flash, nó gây ra lỗi.Vấn đề với XDocument và BOM (Byte Order Mark)
Trả lời
Nếu bạn đang viết XML bằng XmlWriter, bạn có thể đặt Mã hóa thành mã đã được khởi tạo để loại bỏ BOM.
EG: constructor System.Text.UTF8Encoding của mất một boolean để xác định xem bạn muốn BOM, vì vậy:
XmlWriter writer = XmlWriter.Create("foo.xml");
writer.Settings.Encoding = new System.Text.UTF8Encoding(false);
myXDocument.WriteTo(writer);
có tạo ra một XmlWriter với mã UTF-8 và không có Byte Order Mark.
writer.Settings.Encoding chỉ đọc được –
Bạn có chắc chắn không? Tôi không nhận được lỗi biên dịch và tài liệu cho biết nó không chỉ đọc: http://msdn.microsoft.com/en-us/library/system.xml.xmlwritersettings.encoding.aspx –
làm cách nào để tôi nhận được từ đây đến một chuỗi? –
Bạn có thể sử dụng System.Text.Encoding.Convert() trên đầu ra; Cũng giống như một cái gì đó để thử, không phải cái gì tôi đã thử nghiệm.
Chuyển đổi thành chuỗi, sau đó tự xóa dấu đó.
Kind của một sự kết hợp của thông tin đăng, có lẽ một cái gì đó như thế này:
MemoryStream ms = new MemoryStream();
StreamWriter writer = new StreamWriter(ms, new UTF8Encoding(false));
xmlDocument.Save(writer);
Như đã trình bày, vấn đề này có một mùi khó chịu.
Theo this support note, Flash sử dụng BOM để phân biệt giữa UTF-16BE và UTF-16LE, điều này là đúng. Vì vậy, bạn không nên nhận được một lỗi từ Flash: XDocument sản xuất UTF16 mã hóa cũng được hình thành XML, và Macromedia tuyên bố rằng Flash có thể đọc UTF16 mã hóa cũng được hình thành XML.
Điều này làm cho tôi nghi ngờ rằng bất kỳ vấn đề gì mà bạn đang gặp phải, có thể nó không phải do BOM gây ra. Nếu đó là tôi, tôi sẽ đào nhiều hơn, với kỳ vọng rằng vấn đề thực sự là ở một nơi khác.
Tôi không thể thêm nhận xét ở trên, nhưng nếu có ai sử dụng đề xuất của Chris Wenham, hãy nhớ Vứt bỏ tác giả! Tôi đã dành thời gian tự hỏi tại sao đầu ra của tôi bị cắt ngắn, và đó là lý do.
Đề nghị một sự thay đổi using(XmlWriter...) {...}
để gợi ý của Chris
nhẹ mod để trả lời Chris Wenham của.
Bạn không thể sửa đổi mã hóa khi các XmlWriter được tạo ra, nhưng bạn có thể đặt nó bằng cách sử dụng XmlWriterSettings khi tạo XmlWriter
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = new System.Text.UTF8Encoding(false);
XmlWriter writer = XmlWriter.Create("foo.xml", settings);
myXDocument.WriteTo(writer);
- 1. XDocument: lưu XML vào tệp mà không cần BOM
- 2. Force UTF-8 Byte Order Mark trong đầu ra tệp Perl
- 3. Guid Byte Order trong .NET
- 4. Truy vấn LINQ với SUM và ORDER BY
- 5. Vấn đề với BinaryReader.ReadChars()
- 6. Xóa các dấu thứ tự byte (BOM) bằng Emacs
- 7. Truy vấn XDocument với thuộc tính xmlns (không gian tên)
- 8. ConsoleKeyInfo, câu hỏi Mark và Portability
- 9. DISTINCT() và ORDERBY vấn đề
- 10. Bom Scala? (giống như quả bom nén)
- 11. XMLAGG với RTRIM vấn đề
- 12. Kết quả luân phiên với mệnh đề ORDER
- 13. Các vấn đề với ggplot và pgfSweave
- 14. vấn đề Mono với cert và mozroots
- 15. Vấn đề với NUnit và app.config
- 16. Các vấn đề với transitionWithView và animateWithDuration
- 17. Vấn đề FFI với vợt và Chipmunk
- 18. Validation vấn đề với JSP và Eclipse
- 19. các vấn đề với RVM và OpenSSL
- 20. qsort và các vấn đề với nó
- 21. Làm cách nào để mã hóa/giải mã mảng byte UTF-16LE bằng BOM?
- 22. android: ORDER BY trong truy vấn
- 23. Vấn đề với GCD và quá nhiều chủ đề
- 24. Các vấn đề với Erlang NIF và chủ đề
- 25. truy vấn cql3 với hạn chế hơn 1 EQ và ORDER BY
- 26. So sánh tập tin qua các vấn đề về byte Byte
- 27. Các tệp Javascript có nên bao gồm BOM hay không?
- 28. Vấn đề với isReachable trong lớp InetAddress
- 29. Vấn đề với javadoc
- 30. vấn đề truy vấn sqlplus (Gói Spec và Body)
thể trùng lặp của [XDocument: Tiết kiệm XML để nộp mà không BOM] (http : //stackoverflow.com/questions/4942825/xdocument-saving-xml-to-file-without-bom) –