XMLの設計
なるべく汎用的に、拡張可能に設計する。
そしてなるべくなら、ノードの深さは一定にする。
長いところや短いところができないようにする。
XMLの操作
ファイルとのやりとり
XMLファイルとのやりとりは全てSystem.Xml.XmlDocumentクラスで行う。
- ファイルからXMLを読み込むなら、System.Xml.XmlDocument.Load()
- ファイルへXMLを書き出すなら、System.Xml.XmlDocument.Save()
XmlNode
XMLは、System.Xml.XmlNodeインタフェースによって操作する。
XmlNodeのインスタンスひとつひとつがXMLのタグに相当する。
関数の切り分け
ひとつのタグを処理するのがひとつの関数にする。
たとえば、BODYタグを処理するのは、LoadXML_BODYとか。
チップス
XmlNodeとXmlElementの違い
実質的に同じ。だけど、親子関係がある。フルーツとリンゴの関係に同じ。
つまり、XmlElementは実体化されているが、XmlNodeは実体化されていない。
現在のところ、XmlNodeからXmlElementへのキャストは必ず成功するといって
良いが、今後どうなっていくかはわからない。
XmlDocument.Saveしたけど保存されない
ま、別にXmlDocumentに限ったことではないけど、
XmlDocument.Saveの引数に相対パス(たとえば「./save.xml」など)で
ファイル名を指定した場合、その保存先は以下のようになる。
- ファイル保存ダイアログを使っていない→実行ファイルと同じ場所(ただし、IDE上で実行した場合はプロジェクトファイルと同じ場所)
- ファイル保存ダイアログを使った→その保存場所に指定したディレクトリと同じ場所。
2つ目は特に盲点になるかと思います。いったん保存先のパスを
デバッガのウィンドウに出力しておくと便利かと思います。
System.Diagnostics.Debug.WriteLine( System.IO.Path.GetFullPath(fname) );