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