- - PR -
XmlDocumentに関して
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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 |
|
投稿日時: 2006-10-03 21:26
'1の時点では要素ノードCCC(parent_node)の下にテキストノード"DDD"(parent_text)が子供として付いているので、子供ノード数は1です。
'2の時点では、要素ノードCCCの下にさらに要素ノードAAA(child_node)が追加されたので、もとからあったテキストノード "DDD" と合わせて、子供ノード数は2個です。 ノードと要素はちがうものです。 |
|
投稿日時: 2006-10-03 21:38
スフレさん
仰ること納得しました。 純粋に要素数のみを数えるメソッドは 存在しないということでしょうか? ( 今回のようにCCCの下にある要素ノード数のみを カウントは出来ない? ) |
|
投稿日時: 2006-10-03 22:50
そのまんまのメソッドはないのではないでしょうか。
.ChildNodes でループして要素だけ数えるとか、SelectNodes("/CCC/*") の結果を利用するとかの手段があります。 |
1