加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 07:25:38 所属栏目:百科 来源:网络整理
导读:我需要制作一个 XML文件 – 合作伙伴对标题很贴切.显然,标题必须是这样的: ?xml version="1.0"? 但每当我创建一个XML文件时,我都会得到如下无关的属性: ?xml version="1.0" encoding="utf-8" standalone="yes"? 我的黑客想要停止使用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”:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读