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”将做我所需要的。
答
你想要WriteDocType
。使用如下:
messageWriter.WriteDocType("message", null, "work_request_20.dtd", null);
请参阅this fiddle的演示。
它是XML或不是。一旦开始使用非标准实践,您会发现与其他系统或应用程序的互操作性失败(可能在您离开公司后数年)。 – Neil