【问题标题】:Formatting on XMLWriter always writes all on the same lineXMLWriter 上的格式总是写在同一行
【发布时间】:2012-11-19 16:25:21
【问题描述】:

我有一个子程序,我试图用它来输出一些 XML,但无论我做什么,输出文件都会将所有内容都写在同一行:下面是我的代码,你能告诉我我可能在哪里吗走错了?

 Private Sub CreateActionFile()

        Dim lobjDirectory As New DirectoryInfo(mstrFolderName)
        Dim lobjFiles As New List(Of FileInfo)
        lobjFiles.AddRange(lobjDirectory.GetFiles("*.xml"))
        Dim lobjWriter As XmlWriter = XmlWriter.Create(mstrFolderName & "\" & txtActionName.Text & ".xml")

        Dim lobjSettings As New XmlWriterSettings()

        lobjSettings.Indent = True
        lobjSettings.NewLineOnAttributes = True

        Dim lstrStartFileNumber As Integer = CInt(txtFrom.Text)
        Dim lstrEndFileNumber As Integer = CInt(txtTo.Text)

        lobjWriter.WriteStartElement("Action")
        lobjWriter.WriteAttributeString("ID", Me.txtID.Text)
        lobjWriter.WriteAttributeString("Name", Me.txtActionName.Text)
        lobjWriter.WriteAttributeString("Type", "XML")
        lobjWriter.WriteStartElement("xml")
        While lstrEndFileNumber > lstrStartFileNumber
            For Each lobjFile As FileInfo In lobjFiles
                If lobjFile.Name.StartsWith(lstrStartFileNumber.ToString) Then
                    Dim lobjXmlDom As New XmlDocument
                    lobjXmlDom.Load(lobjFile.FullName)
                    lobjXmlDom.WriteContentTo(lobjWriter)
                    lstrStartFileNumber = lstrStartFileNumber + 1
                Else
                    'Nothing - move on
                End If
            Next
        End While
        lobjWriter.WriteEndElement()
        lobjWriter.WriteEndElement()
        lobjWriter.WriteEndDocument()

        lobjWriter.Close()

    End Sub

【问题讨论】:

    标签: xml vb.net xml-formatting


    【解决方案1】:

    您正在创建设置,但没有将它们传递给任何东西:

    Dim lobjSettings As New XmlWriterSettings()
    lobjSettings.Indent = True
    lobjSettings.NewLineOnAttributes = True
    

    您应该在创建XmlWriter时使用它们:

    Dim filename = Path.Combine(mstrFolderName, txtActionName.Text & ".xml")
    Dim lobjWriter = XmlWriter.Create(filename, lobjSettings)
    

    (我已经将文件名从编写器创建中分离出来只是为了格式化,但请注意Path.Combine 的使用。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-12
      • 2014-08-21
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      • 2014-04-20
      相关资源
      最近更新 更多