XML转换后保留DTD

时间:2010-05-07 14:12:46

标签: .net xml dtd

我正在转换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();
            }

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

为了保留XML声明,您需要确保XmlWriterSettings false设置为var settings = new XmlWriterSettings { Indent = true, IndentChars = "\t", ConformanceLevel = ConformanceLevel.Auto, Encoding = Encoding.UTF8, OmitXmlDeclaration = false, };

xsl

至于DTD“走开” - 由于您正在转换文档,您应该为转换后的文档添加新的DTD声明。

如果没有xml和{{1}}文件,很难确定。你能编辑你的问题并添加它们吗?

答案 1 :(得分:0)

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

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

它有效。是的我也有

OmitXmlDeclaration = false,

由于