C#的XMLWriter - 非标准的XML元素

问题描述:

我有一些XMLWriter的代码,我需要修改: C#的XMLWriter - 非标准的XML元素

XmlWriter messageWriter = XmlWriter.Create(strbuilder); 
messageWriter.WriteStartDocument(); 

//Add this line below 
messageWriter.???? (@"<!DOCTYPE message SYSTEM "work_request_20.dtd">"); 

messageWriter.WriteStartElement("message"); 
messageWriter.WriteAttributeString("message_id", id.ToString()); 
messageWriter.WriteAttributeString("message_dt", Lb.TestDate.ToString("MM/dd/yyyy hh:mm:ss.fff tt")); 

遗憾的是,到目前为止,不管我用连接到XMLWriter的哪一种方法它不喜欢的“< “”>“或”!“字符。如果我使用StartElement或类似的,我相信它会为我添加“<>”。

如果我将所有三个字符取出(<,>,!),那么它会告诉我“消息=状态文档中的令牌文本将导致无效的XML文档。

请告知如何使这项工作。

谢谢。

我找到了我需要的答案。它是:xmlwriter.WriteRaw

这是一种特殊情况,本身不是“真正的”xml文件,但它是基本的XML格式。但是,对于这种特殊情况,我需要编写非标准的XML,并且它看起来像“WriteRaw”将做我所需要的。

+0

它是XML或不是。一旦开始使用非标准实践,您会发现与其他系统或应用程序的互操作性失败(可能在您离开公司后数年)。 – Neil

你想要WriteDocType。使用如下:

messageWriter.WriteDocType("message", null, "work_request_20.dtd", null); 

请参阅this fiddle的演示。