[英]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聲明。
沒有xsl
和xml
文件,很難確定。 您可以編輯問題並添加它們嗎?
嘿,謝謝你的答復。 我做了
writer.WriteDocType(mydoc.DocumentType.Name, mydoc.DocumentType.PublicId, mydoc.DocumentType.SystemId, mydoc.DocumentType.InternalSubset);
而且有效。 是的,我也有
OmitXmlDeclaration = false,
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.