0

XML設定ファイルを検証する関数をコーディングしようとしているので、ファイルにノードが存在しない場合は、ノードを作成する必要があります。

私はこの機能を持っています

private void addMissingSettings() {
    XmlDocument xmldocSettings = new XmlDocument();
    xmldocSettings.Load("settings.xml");

    XmlNode xmlMainNode = xmldocSettings.SelectSingleNode("settings");

    XmlNode xmlChildNode = xmldocSettings.CreateElement("ExampleNode");
    xmlChildNode.InnerText = "Hello World!";

    //add to parent node
    xmlMainNode.AppendChild(xmlChildNode);
    xmldocSettings.Save("settings.xml");
}

しかし、私のXMLファイルでは、

<rPortSuffix desc="Read Suffix">&#13;&#10;</rPortSuffix>
<wPortSuffix desc="Write Suffix">&#03;</wPortSuffix>

ドキュメントを保存すると、それらの行が次のように保存されます

<rPortSuffix desc="Read Suffix">
</rPortSuffix>
<wPortSuffix desc="Sufijo en puerto de escritura">&#x3;</wPortSuffix>
<ExampleNode>Hello World!</ExampleNode>

この動作を防ぐ方法はありますか?動作する文字セットなどを設定するのが好きですか?

4

1 に答える 1

1

2つのファイルは同等であり、すべてのXMLパーサーによって同等として扱われるべきだと私は信じています。

さらに、Unicode文字U + 0003は有効なXML文字ではないため、ファイルで表現しようとすると、基本的に他の問題が発生します。その特定の.NETXMLパーサーは異議を唱えているようには見えませんが、他のパーサーは異議を唱える可能性があります。

XMLで絶対に任意の文字を表現する必要がある場合は、他の形式で表現することをお勧めします。

<rPortSuffix desc="Read Suffix">\u000c\u000a</rPortSuffix>
<wPortSuffix desc="Write Suffix">\u0003</wPortSuffix>

明らかに、そのテキストを適切に解析する必要がありますが、少なくともXMLパーサーは邪魔にならず、UTF-16コードユニットを表すことができます。

于 2012-08-22T21:08:18.567 に答える