0

ファイルに新しいノードを追加するたびに、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

ファイルのフォーマットが失われる原因がわからないので、誰かが助けてくれるかどうか疑問に思っています。前もって感謝します。

4

1 に答える 1

0

私は同様の問題を抱えていました。サーバー上の既存の (整形式の) xml ファイルを更新しようとしていました。

以下のコード例は、javascript 関数にあります。

...
xml = '<?xml version="1.0" encoding="utf-8" ?>';
xml += '<root>';
xml += '<child_A>Hello World</child_A>';
xml += '<child_B>Good World</child_B>';
xml += '</root>';
...

次に、ASP ファイルで、appendChild メソッドを使用して、新しい xml ノードを既存の xml のルート ノードに追加しようとしました。あなたの例のように、私のxmlファイルに追加された新しいノードはフォーマットされていません。すべてが長い紐のようにくっついています :(

何時間もの調査と試行錯誤の末...

私の問題の解決策...

...
xml = '<?xml version="1.0" encoding="utf-8" ?>';
xml += ' <root>';
xml += '   <child_A>Hello World</child_A>';
xml += '   <child_B>Good World</child_B>';
xml += ' </root>';
...

文字列にスペースを入れる!?! とにかく、FireFox でも動作しますが、IE でも動作することを確認する必要があります。

これが助けになることを願っています。

于 2013-09-19T15:13:03.503 に答える