【问题标题】:Keep DTD after XML TransformXML 转换后保留 DTD
【发布时间】:2010-05-07 22:31:08
【问题描述】:

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

有什么想法吗?

【问题讨论】:

    标签: .net xml dtd


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      它奏效了。是的,我也有

      OmitXmlDeclaration = false,
      

      谢谢

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-20
        相关资源
        最近更新 更多