トップ回答者
XmlTextReaderについて

質問
-
XmlTextReaderについて
VS2005環境でVC#のXmlTextReaderを使いXML文書を読み込んでいます。
while( READER.Read() )
{
switch( READER.NodeType )
{
case XmlNodeType.Element:
break;
case XmlNodeType.EndElement:
break;
}
....
}ここで質問なのですが
以下のように<NODE name="NA" expand="True">
<NODE name="NB" expand="False" />
<NODE name="NC" expand="False" />
<NODE name="ND" expand="False" />
</NODE></NODE>のようにEndElementが明示的に記述されているものは
上記のプログラム内でEndElementの検出が出来るのですが
2、3、4行目のようなElementの中に情報がないような場合( <NODE ... /> )
EndElementが検出出来ません。何故でしょうか?
回答
-
「EndElement ノードは、空の要素に対して生成されません。」だそうです。
↓ソース
XmlTextReader.IsEmptyElement プロパティ
現在のノードが空の要素 (<MyElement/> など) かどうかを示す値を取得します。
http://msdn.microsoft.com/ja-jp/library/system.xml.xmltextreader.isemptyelement.aspx
(抜粋)
<item num="123"/> (IsEmptyElement が true)。
<item num="123"> (IsEmptyElement が false。ただし要素の内容は空)。
対応する EndElement ノードは、空の要素に対して生成されません。# XmlDocument クラスは使わないんですね?
- 回答としてマーク 高橋 春樹 2010年3月1日 6:10
すべての返信
-
「EndElement ノードは、空の要素に対して生成されません。」だそうです。
↓ソース
XmlTextReader.IsEmptyElement プロパティ
現在のノードが空の要素 (<MyElement/> など) かどうかを示す値を取得します。
http://msdn.microsoft.com/ja-jp/library/system.xml.xmltextreader.isemptyelement.aspx
(抜粋)
<item num="123"/> (IsEmptyElement が true)。
<item num="123"> (IsEmptyElement が false。ただし要素の内容は空)。
対応する EndElement ノードは、空の要素に対して生成されません。# XmlDocument クラスは使わないんですね?
- 回答としてマーク 高橋 春樹 2010年3月1日 6:10
-