VB.NET XMLWriter:如何更改标题中的内容?

Kyl*_*son 4 vb.net xmlwriter

我需要制作一个XML文件 - 合作伙伴对标题很贴切.显然,标题必须是这样的:

<?xml version="1.0"?>
Run Code Online (Sandbox Code Playgroud)

但每当我创建一个XML文件时,我都会得到如下无关的属性:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
Run Code Online (Sandbox Code Playgroud)

我的黑客想要停止使用XMLWriter来制作文件,以便我可以更好地控制标题; "没问题,我只是编写一个循环,将自己的XML标记作为StreamWriter或其他东西,忘记这个XMLWriter对象......"但我必须承认,到目前为止,XMLWriter的使用相当优雅; 肯定有一些东西,我可以更改XMLWriterSettings对象,说"停止将自定义属性放入XML标题",对吧?

这是相关的VB代码:

    Dim settings As New XmlWriterSettings()
    settings.Indent = True
    settings.IndentChars = "    "
    settings.NewLineChars = "\n"
    Using writer As XmlWriter = XmlWriter.Create(strFileName, settings)
            writer.WriteStartDocument(True)
            For Each kvp As KeyValuePair(Of String, String) In dictArguments

                 Dim key As String = kvp.Key
                 Dim value As String = kvp.Value

                 writer.WriteStartElement(key)
                 writer.WriteString(value)
                 writer.WriteEndElement()

            Next

    End Using
Run Code Online (Sandbox Code Playgroud)

工作完美; 但我找不到控制标题的方法.我当然可以找到一种完全删除它的方法,但这不是我们想要做的.

编辑:谢谢你的帮助; 到目前为止,一旦我们删除了WriteStartDocument,它现在不再显示standalone = yes.但我不能让它停止添加编码.有任何想法吗?

Dan*_*ard 10

这样做的一种方法是使用WriteProcessingInstruction方法自己控制初始处理指令:

    Dim settings As New XmlWriterSettings()
    settings.Indent = True
    settings.IndentChars = "    "
    Using writer As XmlWriter = XmlWriter.Create(strFileName, settings)
        writer.WriteProcessingInstruction("xml", "version='1.0'")
        writer.WriteStartElement("root")
        For Each kvp As KeyValuePair(Of String, String) In dictArguments

            Dim key As String = kvp.Key
            Dim value As String = kvp.Value

            writer.WriteStartElement(key)
            writer.WriteString(value)
            writer.WriteEndElement()

        Next
        writer.WriteEndElement()

    End Using
Run Code Online (Sandbox Code Playgroud)

请注意,我还添加了一个"root"元素,以防你的字典包含多个元素(我猜测没有字典键值是"root":)