我想打開/關閉一個XmlWriter
的Indent
財產我需要的時候,能夠與這個格式來寫:如何打開/關閉XmlWriter縮進屬性?
<?xml version="1.0" encoding="Windows-1252"?>
<Songs>
<Song><Name>My Song 1.mp3</Name><Year>2007</Year></Song>
<Song><Name>My Song 2.mp3</Name><Year>2009</Year></Song>
<Song><Name>My Song 3.mp3</Name><Year>2008</Year></Song>
</Songs>
的問題是我不知道如何修改屬性,我讀過其他SO問題,不可能多次設置此屬性...但是...如果使用XmlTextWriter
代替XmlWriter
我可以隨時打開/關閉縮進,並注意到一個XmlTextWriter
來自Framework 2.0,所以我不能相信沒有辦法修改縮進屬性,因爲類XmlWriter
比XmlTextWriter
要多得多。
我不會用XmlTextWriter
代替XmlWriter
只是因爲XmlWriter
可能成爲未來的日子完全過時,我preffer使用框架當前類的邏輯,並不能立足於老班我的代碼。
此外,我不會做一些棘手的事情,比如「禁用縮進和用WriteString方法修改換行符」,因爲那會在特定行中拋出異常。爲了說明起見,我只想打開/關閉XmlWriter
的縮進屬性,或者只要我想要打開/關閉縮進,但沒有其他我不會做的事情。
這裏是代碼,它引發一個異常,當我試圖修改縮進屬性說,這是隻讀屬性,但就像我說過的,我可以在XmlTextWriter
所以...這似乎太奇怪了。
Dim xmlsettings As XmlWriterSettings = _
New XmlWriterSettings() With { _
.Indent = True, _
.Encoding = System.Text.Encoding.Default}
Dim Xml As XmlWriter = XmlTextWriter.Create(xmlfile, xmlsettings)
Private Sub Write_SongInfo_Node(ByVal xml As XmlWriter,
ByVal Name As String, _
ByVal Year As String)
xml.WriteStartElement("Song")
xml.Settings.Indent = False
xml.WriteStartElement("Name")
xml.WriteString(Name)
xml.WriteEndElement()
xml.WriteStartElement("Year")
xml.WriteString(Year)
xml.WriteEndElement()
xml.Settings.Indent = True
xml.WriteEndElement()
' xml.WriteString(Environment.NewLine)
End Sub
爲什麼的格式化了' xml的問題? – flindeberg
@flindeberg可以說,你可以通過排除換行符和製表符來削減一些文件大小,但實際上,如果你不得不優化你的xml,xml是錯誤的技術。 – Gusdor
@Gusdor在這種情況下,爲什麼不將'XmlWriterSettings.Indent'設置爲'false'並將其留在那裏呢?我想知道在這個特定的情況下,這是沒有意義的。 – flindeberg