ファイルに新しいノードを追加するたびに、XML ファイル内でフォーマットを維持しようとすると問題が発生します。たとえば、最初から 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>
<UnprocessedFilename></UnprocessedFilename>
<SalesFilename></SalesFilename>
<FileReadDelay></FileReadDelay>
</Settings>
</Data>
ただし、既存のファイルに新しいノードを追加するたびに、ファイルの下部に次のフォーマットされていないエントリが表示されます。
<?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>
<UnprocessedFilename></UnprocessedFilename>
<SalesFilename></SalesFilename>
<FileReadDelay></FileReadDelay>
<SEOFilename></SEOFilename><LBossFilename></LBossFilename><ProcessesFilename></ProcessesFilename></Settings>
</Data>
新しいノードを追加する私のコードは次のようになります。
Dim MyXML As New XmlDocument()
Dim MyXMLNode As XmlNode
MyXML.PreserveWhitespace = True
Try
MyXML.Load(SettingsXMLFile)
MyXMLNode = MyXML.SelectSingleNode("//Data/Settings/" & ElementName)
If Not MyXMLNode Is Nothing Then
MyXMLNode.InnerText = ElementValue.ToString
MyXML.Save(SettingsXMLFile)
Else
Dim XMLRoot As XmlElement = MyXML.SelectSingleNode("//Data/Settings")
Dim XMLChild As XmlElement = MyXML.CreateElement(ElementName)
XMLChild.InnerText = ElementValue
XMLRoot.AppendChild(XMLChild)
MyXML.Save(SettingsXMLFile)
End If
MyXMLNode = Nothing
MyXML = Nothing
ファイルのフォーマットが失われる原因がわからないので、誰かが助けてくれるかどうか疑問に思っています。前もって感謝します。