繁体   English   中英

XML转换后保留DTD

[英]Keep DTD after XML Transform

我正在转换XML文档,但是在转换之后,我的DTD消失了,并且第一行告诉了XML版本,该行丢失了。

<?xml version="1.0"?>

我用来转换XML文件的代码是:

// Load the style sheet.
            var xslt = new XslCompiledTransform();
            xslt.Load("XSLTFile1.xslt");

            // Create the writer.
            var settings = new XmlWriterSettings
                            {
                                Indent = true,
                                IndentChars = "\t",
                                ConformanceLevel = ConformanceLevel.Auto,
                                Encoding = Encoding.UTF8,
                            };

            var mydoc = XDocument.Load("Doc1.xml"); 

            var writer = XmlWriter.Create("Doc2.xml", settings);

            // Execute the transform and output the results to a file.
            if (writer != null)
            {
                xslt.Transform(mydoc.CreateReader(), writer);
                writer.Close();
            }

有任何想法吗?

为了保留XML声明,您需要在XmlWriterSettings确保OmitXmlDeclaration设置为false

var settings = new XmlWriterSettings
                   {
                     Indent = true,
                     IndentChars = "\t",
                     ConformanceLevel = ConformanceLevel.Auto,
                     Encoding = Encoding.UTF8,
                     OmitXmlDeclaration = false,
                    };

至于DTD即将“消失”-由于您要转换文档,因此应在转换后的文档中添加新的DTD声明。

没有xslxml文件,很难确定。 您可以编辑问题并添加它们吗?

嘿,谢谢你的答复。 我做了

writer.WriteDocType(mydoc.DocumentType.Name, mydoc.DocumentType.PublicId, mydoc.DocumentType.SystemId, mydoc.DocumentType.InternalSubset); 

而且有效。 是的,我也有

OmitXmlDeclaration = false,

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM