我想在需要时打开/关闭Indent
a 的属性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 问题中读过不可能多次设置此属性......但是......如果使用 aXmlTextWriter
而不是XmlWriter
我可以打开/随时关闭缩进,并注意到 aXmlTextWriter
来自 Framework 2.0,所以我无法相信没有办法修改 Indent 属性,因为 ClassXmlWriter
比XmlTextWriter
.
我不会使用 theXmlTextWriter
而不是XmlWriter
仅仅因为它XmlWriter
在未来的日子里可能会完全过时,我更喜欢使用框架当前类的逻辑并且不将我的代码基于旧类。
此外,我不会做一些棘手的事情,例如“使用 WriteString 方法禁用缩进和写换行符”,因为这会在某些行引发异常。
澄清一下,我只想打开/关闭一个XmlWriter
或一个 devired 和工作方式的 indent 属性,以便在我想要的时候打开/关闭缩进,而不是我不会做的任何其他事情。
这是代码,当我尝试修改 Indent 属性说它只是读取属性时,它会引发异常,但就像我说过的那样,我可以这样做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