0

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>

何が間違っているのかわかりませんが、この問題に関する情報をWeb上で見つけることができないようです。誰かが私を助けてくれるかどうか疑問に思います。どんな助けでもいただければ幸いです。

ありがとう

4

1 に答える 1

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
于 2013-03-19T06:52:47.503 に答える