0

このコード:

XmlNode columnNode = null;                               
columnNode = xmlDoc.CreateElement("SYSID");
columnNode.InnerText = ""; // Empty string
newRowNode.AppendChild(columnNode);

...これを行います:

<SYSID>
</SYSID>

文字列が空の場合、これが必要です。

<SYSID></SYSID>

解決策はありますか?

4

1 に答える 1

2

その形式を必要とする別のツールがある場合、そのツールは間違っています。つまり、XML を読み取ることができません。したがって、他のツールを制御できる場合は、コードを強制的に一致させるのではなく、修正することをお勧めします。

他のツールを修正できない場合は...

ドキュメントを作成してディスクに書き出すだけの場合は、ストリームを使用して要素を自分で (単純なテキストとして) 直接書き込むことができます。これは、XmlDoc を使用するよりも高速です (そして簡単かもしれません)。

その改善として、XmlWriter を使用して要素を書き込むことができる場合がありますが、空の要素を書き込む場合は、生のテキストをストリームに書き込みます (つまり、writer.WriteRaw("<SYSID></SYSID>\n ")) これらの特定の要素のフォーマットを制御できるようにします。

メモリ内 XmlDocument を作成する必要がある場合は、ディスクにシリアル化するように要求するときに使用する書式設定にかなり我慢する必要があります (PreserveWhitespace などの基本的な設定は別として、ドキュメントに情報の保存を扱うため、XmlDocument がカプセル化する機能の多くを制御できなくなります)。この場合に考えられる最善の提案は、XmlDocument を MemoryStream に書き込み、そのメモリ ストリームを後処理して、空の要素内から改行を削除することです。(うん!)

于 2012-11-16T12:47:44.710 に答える