Форматирование на XMLWriter всегда записывает все в одной строке
У меня есть подпрограмма, которую я пытаюсь использовать, чтобы получить какой-то 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
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
также.)