28

考虑以下创建 XML 文档并显示它的简单代码。

XmlDocument xml = new XmlDocument();
XmlElement root = xml.CreateElement("root");
xml.AppendChild(root);
XmlComment comment = xml.CreateComment("Comment");
root.AppendChild(comment);
textBox1.Text = xml.OuterXml;

它按预期显示:

<root><!--Comment--></root>

但是,它不会显示

<?xml version="1.0" encoding="UTF-8"?>   

那么我怎样才能得到它呢?


在将值添加到邮件附件之前检查变量的逻辑

  • 更改脚本中的以下行以Attachments使用函数检查变量中的值是否不为空String.IsNullOrEmpty

  • 在. _ User::_System::Script Task

  • System.IO.File.Exists要添加更多条件,您可以在将文件添加到邮件附件之前使用函数检查文件是否确实存在于指定路径中。

从:

myHtmlMessage.Attachments.Add(New Attachment(Dts.Variables("Attachments").Value.ToString))

至:

Dim attachment As String = Dts.Variables("User::Attachments").Value.ToString()

If Not String.IsNullOrEmpty(attachment) Then
    If System.IO.File.Exists(attachment) Then
        myHtmlMessage.Attachments.Add(New Attachment(attachment))
    End If
End If
4

3 回答 3

39

使用XmlDocument.CreateXmlDeclaration 方法创建 XML 声明:

XmlNode docNode = xml.CreateXmlDeclaration("1.0", "UTF-8", null);
xml.AppendChild(docNode);

注意:方法请看文档,特别encoding参数:对这个参数的取值有特殊要求。

于 2013-02-12T18:52:03.897 回答
17

您需要使用 XmlWriter(默认情况下写入 XML 声明)。您应该注意 C# 字符串是 UTF-16 并且您的 XML 声明表明该文档是 UTF-8 编码的。这种差异可能会导致问题。这是一个示例,写入一个给出您期望结果的文件:

XmlDocument xml = new XmlDocument();
XmlElement root = xml.CreateElement("root");
xml.AppendChild(root);
XmlComment comment = xml.CreateComment("Comment");
root.AppendChild(comment);

XmlWriterSettings settings = new XmlWriterSettings
{
  Encoding           = Encoding.UTF8,
  ConformanceLevel   = ConformanceLevel.Document,
  OmitXmlDeclaration = false,
  CloseOutput        = true,
  Indent             = true,
  IndentChars        = "  ",
  NewLineHandling    = NewLineHandling.Replace
};

using ( StreamWriter sw = File.CreateText("output.xml") )
using ( XmlWriter writer = XmlWriter.Create(sw,settings))
{
  xml.WriteContentTo(writer);
  writer.Close() ;
}

string document = File.ReadAllText( "output.xml") ;
于 2013-02-12T19:17:47.297 回答
6
XmlDeclaration xmldecl;
xmldecl = xmlDocument.CreateXmlDeclaration("1.0", "UTF-8", null);

XmlElement root = xmlDocument.DocumentElement;
xmlDocument.InsertBefore(xmldecl, root);
于 2013-12-18T11:16:14.693 回答