- PR -

XmlDocumentに関して

1
投稿者投稿内容
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2006-10-03 20:20
VS2005にてデータをXMLで持たせることを考えており、
以下のようなソースを作りました。

そこで気になったのが ' 1の時点で1が表示され
' 2の時点で2が表示される点です。

' 2の時点ではROOTの下には"CCC"その下には"AAA"が付くため1
' 1の時点ではROOTの下には"CCC"その下にはないため0

だと思うのですがなぜか+1した数字が出てきます。

ご教授願えませんでしょうか?

Dim root_node as XmlElement = New XmlDocument

Dim parent_node As XmlElement = root_node .CreateElement("CCC")
Dim parent_text As XmlText = root_node .CreateTextNode("DDD")

Dim child_node As XmlElement = root_node .CreateElement("AAA")
Dim child_text As XmlText = root_node .CreateTextNode("BBB")


parent_node.AppendChild(parent_text)
root_node.AppendChild(parent_node)

MsgBox(root_node.SelectSingleNode("(/CCC)").ChildNodes.count) ' 1

child_node.AppendChild(child_text)
parent_node.AppendChild(child_node)
MsgBox(root_node.SelectSingleNode("(/CCC)").ChildNodes.count) ' 2
スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2006-10-03 21:26
'1の時点では要素ノードCCC(parent_node)の下にテキストノード"DDD"(parent_text)が子供として付いているので、子供ノード数は1です。

'2の時点では、要素ノードCCCの下にさらに要素ノードAAA(child_node)が追加されたので、もとからあったテキストノード "DDD" と合わせて、子供ノード数は2個です。

ノードと要素はちがうものです。
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2006-10-03 21:38
スフレさん
仰ること納得しました。

純粋に要素数のみを数えるメソッドは
存在しないということでしょうか?


今回のようにCCCの下にある要素ノード数のみを
カウントは出来ない?
スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2006-10-03 22:50
そのまんまのメソッドはないのではないでしょうか。

.ChildNodes でループして要素だけ数えるとか、SelectNodes("/CCC/*") の結果を利用するとかの手段があります。
1

スキルアップ/キャリアアップ(JOB@IT)