12月19日(2008)


Enum(マネージド)をConvert::ToString()で表示してみると…

例えば XmlNodeType列挙体を例にとってみると、

Convert::ToString( XmlNodeType::Element )

を出力すると

Element

と表示される。
これはネイティブなenumと違い、クラスとして実装されているから。
Enumは

public abstract class Enum : ValueType, IComparable, IFormattable, IConvertible

となっており、IConvertibleインターフェースのオーバーライド部分で
Stringへのコンバートが実装されているからっぽい?
それともObjectの仕様?



XmlReaderのRead()はどうなってんの?

かなり単純な例として
<a>
  <b>text</b>
</a>

を扱ってみる。
このxmlファイルを

XmlReader ^xr = XmlReader::Create( xml_file );
while( xr->Read() ) {
   output( Convert::ToString( xr->NodeType ) );
}

とやってみると

Element - Whitespace - Element - Text - EndElement - Whitespace - EndElement

となる。
属性部は明示的に読みにいかない限り読まれない。

Whitespaceというのは、マークアップ間の空白(おそらく改行やスペース)のこと。
ためしに<a><b>とつなげて記述すると WhiteSpaceはなくなる。
ちなみにマークアップっていうのは<>の部分の事っぽい。
xmlはマークアップとテキストのみで構成という前提があるようだ。
最終更新:2008年12月19日 20:58
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。