2011-12-17 30 views
6

Tôi cần phải có mã hóa và phiên bản XML ở đầu tài liệu XML mà tôi đang tạo với XDocument.Nhận UTF-8 trong chữ hoa bằng cách sử dụng XDocument

Tôi có điều này nhưng nó ở dạng chữ thường và cần phải có chữ hoa.

Tôi cần làm gì?

Tôi khai báo tài liệu XML mới sử dụng lớp học XDocument được gọi là 'doc'.

Tôi lưu tệp này vào tệp bằng cách sử dụng doc.Save();.

Tôi đã thử:

  • doc.Declaration.Encoding.ToUpper();
  • Tuyên bố mới XDeclaration
  • Gõ Encoding được viết hoa và thiết lập của tôi doc.Declaration-XDeclaration tôi.

Nó vẫn đi kèm trong chữ thường.

+0

Tại sao bạn cần nó trong chữ hoa? Nó sẽ không tạo ra sự khác biệt nào với một trình phân tích cú pháp XML tuân thủ tiêu chuẩn. – Oded

+1

Tôi đồng ý, tuy nhiên điều đó không tùy thuộc vào tôi, nó cần phải viết hoa. Tôi đã thử "doc.Declaration.Version.ToUpper", khai báo một XDeclaration mới, gõ phiên bản in hoa và thiết lập "doc.Declaration" của tôi thành XDeclaration của tôi. Nó vẫn đi qua trong chữ thường, tôi đang sử dụng doc.Save(); cảm ơn – JMK

+0

Vui lòng chỉnh sửa câu hỏi của bạn và cập nhật nó với các chi tiết bạn vừa đưa vào nhận xét của mình. Đây có thể bị bỏ qua bởi những người đọc câu hỏi của bạn nếu không. – Oded

Trả lời

4

Bạn có thể tạo tùy chỉnh XmlTextWriter, ví dụ .:

public class CustomXmlTextWriter : XmlTextWriter 
{ 
    public CustomXmlTextWriter(string filename) 
     : base(filename, Encoding.UTF8) 
    { 

    } 

    public override void WriteStartDocument() 
    { 
     WriteRaw("<?xml VERSION=\"1.0\" ENCODING=\"UTF-8\"?>"); 
    } 

    public override void WriteEndDocument() 
    { 
    } 
} 

Sau đó sử dụng nó:

using (var writer = new CustomXmlTextWriter("file.xml")) 
{ 
    doc.Save(writer); 
} 
+0

Tuyệt vời, cảm ơn bạn rất nhiều! – JMK

+0

@Heisenburg, bạn được chào đón! –

+2

Nó rất xa hoàn hảo. Nó thậm chí không phải là XML. XML cho phép (thực sự thích) tên mã hóa phải nằm trong chữ hoa, nhưng từ khóa "mã hóa" và "phiên bản" phải là chữ thường. –

Các vấn đề liên quan