アプリ版:「スタンプのみでお礼する」機能のリリースについて

<?xml version="1.0" encoding="UTF-8" ?>
<Dataroot>
<aaa>
<bbb>
<ccc>値1</ccc>
</bbb>
<bbb>
<ccc>値2</ccc>
</bbb>
</aaa>
</Dataroot>
----------------------------------------------------------------
のようなXML文書がある時<ccc></ccc>の値を取り出す場合
----------------------------------------------------------------
Imports System
Imports System.IO
Imports System.Xml

public class Sample

public shared sub Main()

Dim doc as XmlDocument = new XmlDocument()
doc.Load("data.xml") 'XML文書の読み込み

Dim root as XmlElement = doc.DocumentElement
Dim nodeList as XmlNodeList
nodeList = root.SelectNodes("/Dataroot/aaa/bbb")'/cccまでやる方が簡単

Dim node as XmlNode
Dim ccclist() As String = Nothing
for each node in nodeList
ccclist(nodeList.Count) = node.SelectSingleNode("ccc").InnerText '内容の取り出し
next
end sub
end class

としているのですが
ccclist(nodeList.Count) = node.SelectSingleNode("ccc").InnerText '内容の取り出し
この行で

オブジェクト参照がオブジェクト インスタンスに設定されていません。
とエラーがでて困っています。
これはどのように修正すればよろしいでしょうか?
教えてください。お願いします。

A 回答 (3件)

>Dim ccclist() As String = Nothing


実際の配列が確保されていない。
    • good
    • 0

>foreachで配列を作成する場合、


こういうのも何ですが、For eachを使わず素直にFor i as Integer = 0 to nodeList.count - 1をした方が良いと思います。っていうか方法が思いつきません。
>'/cccまでやる方が簡単
とコメントで述べられておられますように/cccをしてしまうのが一番簡単だとも思いますし。
Imports System
Imports System.IO
Imports System.Xml

public class Sample

public shared sub Main()

Dim doc as XmlDocument = new XmlDocument()
doc.Load("data.xml") 'XML文書の読み込み

Dim root as XmlElement = doc.DocumentElement
Dim nodeList as XmlNodeList
nodeList = root.SelectNodes("/Dataroot/aaa/bbb")'/cccまでやる方が簡単

Dim node as XmlNode
Dim ccclist() As String
Redim ccclist(nodeList.Count-1)
for i as Integer = 0 to nodeList.count - 1
ccclist(i) = nodeList.Item(i).SelectSingleNode("ccc").InnerText '内容の取り出し
next
end sub
end class

#GetEnumeratorメソッドとかも面白そうではあるんだが
http://msdn2.microsoft.com/ja-JP/library/system. …
    • good
    • 0

ヒント0:doc.Load("data.xml") のファイルは存在しているのかな?


ヒント1:配列の添え字がRedim等で決定されていない!
ヒント2:ccclist(nodeList.Count) の添え字はnodeList.Countでいいのかな?
    • good
    • 0
この回答へのお礼

ありがとうございます。
ファイルは存在しています。
添え字ですか・・・・やはりそこが問題ですね。

添え字の決定の仕方がわからないんですけど。
foreachで配列を作成する場合、どういう風に作成すればいいんですか?教えてください。

お礼日時:2006/10/18 12:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!