【问题标题】:XmlWriter.WriteStartDocument() is not outputting the declaration to the fileXmlWriter.WriteStartDocument() 没有将声明输出到文件
【发布时间】:2013-08-07 10:14:01
【问题描述】:

好的,所以我有一个方法应该读取一个 XML 文档,然后将它们全部包装在一个更大的 XML 文档中。

<Elements>
    <Element>
    <Element>
</Elements>

问题是使用输出文件下方的代码时缺少声明

<?xml >

这是什么原因?我希望这是我想念的愚蠢的东西。

XmlWriter xmlWriter = XmlWriter.Create(outputFileName, xwsSettings);

xmlWriter.WriteStartDocument();

xmlWriter.WriteStartElement("Elements");

foreach (var item in items)
{
    xmlReader = XmlReader.Create(item.FullFilename);

    while (xmlReader.Read())
    {
        if(xmlReader.NodeType == XmlNodeType.Element)
        {
            xmlWriter.WriteRaw(xmlReader.ReadOuterXml());
            break;
  }
    }
}

xmlWriter.WriteEndElement();
xmlWriter.WriteEndDocument();

xmlWriter.Flush();
xmlWriter.Close();
xmlWriter = null;

【问题讨论】:

  • xwsSettings中的设置是什么?
  • 是的,谢谢@Tim,我真是个白痴... xwsSettings.OmitXmlDeclaration = true;我之前确实处理过 ConformanceLevel.Fragment 这就是为什么我想我省略了声明......真是个白痴
  • 尝试`XmlWriter.Create(sw, new XmlWriterSettings { OmitXmlDeclaration = true });`
  • 发生在我们所有人身上,尤其是如果我们长时间盯着代码看 :)
  • @Nilesh - OP 希望包含 XML 声明,而不是省略它。

标签: c# xml xmlreader xmlwriter


【解决方案1】:

@Tim 强调检查我的 XmlWriterSettings 设置是否错误

XmlWriterSettings xwsSettings = new XmlWriterSettings();
xwsSettings.CheckCharacters = false;
xwsSettings.CloseOutput = true;
xwsSettings.ConformanceLevel = ConformanceLevel.Document;
xwsSettings.Encoding = Encoding.UTF8;
xwsSettings.Indent = false;
xwsSettings.NewLineHandling = NewLineHandling.None;

xwsSettings.OmitXmlDeclaration = true; <---- should have been false;

【讨论】:

    猜你喜欢
    • 2016-02-05
    • 2021-07-07
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多