2013-03-19 67 views
0

我正在尝试更新XML文档并替换单个节点的内容,但是,在保存XML文件后,我的格式将全部倾斜。正在更新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> 

不知道我在做什么错,但我似乎无法找到任何关于这个网站的信息ssue。想知道是否有人可以帮助我。任何帮助,将不胜感激。

谢谢

回答

0

当您使用下面的代码会发生什么? 它使用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 
+0

感谢您的快速回复。 尝试您的示例并没有对输出产生任何影响,但是,将该值更改为true可以实现此效果。 'REM - 添加此行 MyXML.PreserveWhitespace = true 非常感谢您的帮助和快速响应。 – Riples 2013-03-19 06:59:09