Tôi đang sử dụng XmlWriter.Create()
để lấy một thể hiện văn bản, sau đó viết XML, nhưng kết quả có <?xml version="1.0" encoding="utf-16" ?>
, làm cách nào để cho trình soạn thảo xml của tôi không tạo ra nó?cách tạo xml bằng cách sử dụng xml writer không có phần tử khai báo
Trả lời
Sử dụng XmlWriterSettings.OmitXmlDeclaration
.
Đừng quên đặt XmlWriterSettings.ConformanceLevel
thành ConformanceLevel.Fragment
.
Bạn có thể phân lớp XmlTextWriter
và ghi đè lên các phương pháp WriteStartDocument()
để làm gì:
public class XmlFragmentWriter : XmlTextWriter
{
// Add whichever constructor(s) you need, e.g.:
public XmlFragmentWriter(Stream stream, Encoding encoding) : base(stream, encoding)
{
}
public override void WriteStartDocument()
{
// Do nothing (omit the declaration)
}
}
Cách sử dụng:
var stream = new MemoryStream();
var writer = new XmlFragmentWriter(stream, Encoding.UTF8);
// Use the writer ...
tham khảo: Đây blog post từ Scott Hanselman.
cảm ơn, bất kỳ cách nào tốt hơn? Tôi không muốn phân lớp chỉ vì mục đích loại bỏ tuyên bố. – ninithepug
@ninithepug: Không xa như tôi biết, xin lỗi. Bạn có thể bọc nó lên trong một phương pháp tĩnh ở đâu đó nếu bạn sử dụng nó thường xuyên, mặc dù. Điều đó sẽ giúp giữ cho nó sạch sẽ – Cameron
cảm ơn người đàn ông, đánh giá cao nó – ninithepug
bạn có thể sử dụng XmlWriter.Create()
với:
new XmlWriterSettings { OmitXmlDeclaration = true, ConformanceLevel = ConformanceLevel.Fragment }
public static string FormatXml(string xml)
{
if (string.IsNullOrEmpty(xml))
return string.Empty;
try
{
XmlDocument document = new XmlDocument();
document.LoadXml(xml);
using (MemoryStream memoryStream = new MemoryStream())
using (XmlWriter writer = XmlWriter.Create(memoryStream, new XmlWriterSettings { Encoding = Encoding.Unicode, OmitXmlDeclaration = true, ConformanceLevel = ConformanceLevel.Fragment, Indent = true, NewLineOnAttributes = false }))
{
document.WriteContentTo(writer);
writer.Flush();
memoryStream.Flush();
memoryStream.Position = 0;
using (StreamReader streamReader = new StreamReader(memoryStream))
{
return streamReader.ReadToEnd();
}
}
}
catch (XmlException ex)
{
return "Unformatted Xml version." + Environment.NewLine + ex.Message;
}
catch (Exception ex)
{
return "Unformatted Xml version." + Environment.NewLine + ex.Message;
}
}
- 1. Cách viết khai báo XML bằng cách sử dụng xml.etree.ElementTree
- 2. Thêm nhiều phần tử/thùng chứa XML tự động bằng cách sử dụng XML MarkupBuilder trong Groovy
- 3. C# XML - Nhiều Namespace Tuyên bố với Writer XML
- 4. Android, simple-xml, cách khai báo danh sách các phần tử?
- 5. Sử dụng DTD, một phần tử có thể được khai báo cho phép bất kỳ nội dung XML nào không?
- 6. Cách tạo XML từ XML bằng XSL?
- 7. Thẻ khai báo XML bằng SimpleXML
- 8. Cách xóa các phần tử khỏi XML bằng cách sử dụng Python
- 9. Phần tử gốc Thiếu khi deserializing một phản ứng XML bằng cách sử dụng XmlSerializer
- 10. Cách tạo tài liệu XML bằng cách sử dụng XmlDocument?
- 11. lxml Tạo đoạn XML không có phần tử gốc?
- 12. Làm cách nào để tạo XML bằng cách sử dụng Nokogiri :: XML :: Builder bằng dấu gạch nối trong tên phần tử?
- 13. Đọc văn bản bên trong của một phần tử XML bằng cách sử dụng Go
- 14. Cách xóa phần tử xml khỏi tệp?
- 15. cách Kiểm tra xem một phần tử con XML có tồn tại với LINQ to XML
- 16. Loại trừ thuộc tính khỏi phần tử xml cụ thể bằng cách sử dụng xslt
- 17. Chèn và xóa các nút và các phần tử XML bằng cách sử dụng Nokogiri
- 18. Cách giải quyết tham chiếu đối tượng XML được khai báo nội bộ bằng cách sử dụng NSXMLParser
- 19. Cách sử dụng XML "sâu" với MSTas XML MSTest
- 20. Tôi có cần khai báo XML trên một trang bằng cách sử dụng loại tài liệu XHTML không?
- 21. cách chúng ta có thể đặt giá trị cho phần tử xml bằng cách sử dụng lớp XmlDocument
- 22. XML Diff: Làm thế nào để tạo ra XML diff bằng cách sử dụng XSLT?
- 23. Cách POST XML bằng cách sử dụng RestTemplate
- 24. Làm cách nào để truy cập các phần tử XML không gian tên bằng cách sử dụng BeautifulSoup?
- 25. Trích xuất một phần tử XML từ một file XML sử dụng XPath
- 26. thêm các phần tử XML
- 27. Tạo một tài liệu XML có phần tử gốc không gian tên với trình tạo Nokogiri
- 28. Không gian tên trống bằng cách sử dụng LINQ Xml
- 29. PHP - Xóa phần tử XML
- 30. Xác thực javax.xml.crypto.dsig bằng cách sử dụng khóa công khai trong xml
Từ các tài liệu bạn liên kết đến: 'Các khai báo XML luôn bằng văn bản nếu ConformanceLevel được thiết lập để tài liệu, thậm chí nếu OmitXmlDeclaration được thiết lập để TRUE' – Cameron
@Cameron, True và? –
Nó sẽ không được đặt thành Tài liệu hầu hết thời gian? – Cameron