更新 XML 节点更改 XML 格式
Posted
技术标签:
【中文标题】更新 XML 节点更改 XML 格式【英文标题】:Updating XML Node Changes XML Formatting 【发布时间】:2013-03-19 06:21:39 【问题描述】:我正在尝试更新 XML 文档并替换单个节点的内容,但是,在我保存 XML 文件后,我的格式完全不正确。
这是我的代码:
Public Sub UpdateSettingsXML(ByRef ElementName As String, ByRef ElementValue As String)
Dim MyXML As New XmlDocument()
Dim MyXMLNode As XmlNode
MyXML.Load(SettingsXMLFile)
MyXMLNode = MyXML.SelectSingleNode("//Data/Settings/" & ElementName)
If Not MyXMLNode Is Nothing Then
MyXMLNode.InnerText = ElementValue.ToString
MyXML.Save(SettingsXMLFile)
End If
MyXMLNode = Nothing
MyXML = Nothing
End Sub
我的原始 XML 文件(在我更新节点之前)如下所示:
<?xml version="1.0" encoding="utf-8"?>
<Data>
<Settings>
<DropBoxLocation></DropBoxLocation>
<ServerName></ServerName>
<DatabaseName></DatabaseName>
<Username></Username>
<Password></Password>
<OnlineFilename></OnlineFilename>
<OfflineFilename></OfflineFilename>
<EftposFilename></EftposFilename>
<BankFilename></BankFilename>
<POSFilename></POSFilename>
<ProcessesFilename></ProcessesFilename>
<FileReadDelay></FileReadDelay>
</Settings>
</Data>
但是,一旦我保存了 XML 文件,我的格式将如下所示:
<?xml version="1.0" encoding="utf-8"?>
<Data>
<Settings>
<DropBoxLocation>C:\Dropbox</DropBoxLocation>
<ServerName>
</ServerName>
<DatabaseName>
</DatabaseName>
<Username>
</Username>
<Password>
</Password>
<OnlineFilename>
</OnlineFilename>
<OfflineFilename>
</OfflineFilename>
<EftposFilename>
</EftposFilename>
<BankFilename>
</BankFilename>
<POSFilename>
</POSFilename>
<ProcessesFilename>
</ProcessesFilename>
<FileReadDelay>
</FileReadDelay>
</Settings>
</Data>
不确定我做错了什么,但我似乎无法在网络上找到有关此问题的任何信息。想知道是否有人可以帮助我。任何帮助将不胜感激。
谢谢
【问题讨论】:
【参考方案1】:当您使用下面的代码时会发生什么? 它使用 PRESERVEWHITE 参数
它会修复你的格式吗?
Public Sub UpdateSettingsXML(ByRef ElementName As String, ByRef ElementValue As String)
Dim MyXML As New XmlDocument()
Dim MyXMLNode As XmlNode
'REM - THIS LINE ADDED
MyXML.PreserveWhitespace = false
MyXML.Load(SettingsXMLFile)
MyXMLNode = MyXML.SelectSingleNode("//Data/Settings/" & ElementName)
If Not MyXMLNode Is Nothing Then
MyXMLNode.InnerText = ElementValue.ToString
'REM - THIS LINE ADDED
MyXML.PreserveWhitespace = false
MyXML.Save(SettingsXMLFile)
End If
MyXMLNode = Nothing
MyXML = Nothing
End Sub
【讨论】:
感谢您的快速回复。尝试您的示例对输出没有任何影响,但是,将值更改为 true 已经实现了。 'REM - 此行已添加 MyXML.PreserveWhitespace = true 非常感谢您的帮助和快速响应。以上是关于更新 XML 节点更改 XML 格式的主要内容,如果未能解决你的问题,请参考以下文章
LINQ to XML - 更新节点并将其保存到 XML 文件