2013-03-19 69 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