微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

<?xml version="1.0"?>

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

<?xml version="1.0" encoding="utf-8" standalone="yes"?>

我的黑客想要停止使用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

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

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

解决方法

这样做的一种方法是使用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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐