vb2005でXmlReaderの使い方

このQ&Aのポイント
  • xmlファイルの読込がうまくいかない問題について
  • XmlReaderを使用したvb2005でのxmlファイルの読み込み方法について
  • vb2005のXmlReaderを使ってxmlファイルの読み込みに関する問題
回答を見る
  • ベストアンサー

vb2005でXmlReaderの使い方

xmlファイルの読込がうまくいきません。どこが間違っているでしょうか。 参考にしたページ http://msdn.microsoft.com/ja-jp/library/ayf5ffy5(v=vs.80).aspx -----xmlファイルここから----- <root> <parentnode1> <childnode1>100</childnode1> </parentnode1> <parentnode2>20</parentnode2> </root> -----xmlファイルこまで----- -----コードここから----- Sub Main() Dim b As Boolean Dim objXmlR As XmlReader = XmlReader.Create("c:\temp\sample.xml") objXmlR.MoveToContent() b = objXmlR.ReadToDescendant("parentnode1") Console.WriteLine(objXmlR.Name) '「parentnode1」を出力 Console.WriteLine(objXmlR.Value) '「」を出力 b = objXmlR.ReadToDescendant("childnode1") Console.WriteLine(objXmlR.Name) '「childnode1」を出力 Console.WriteLine(objXmlR.Value) '「」を出力。ここで「100」が出て欲しい End Sub -----コードここまで----- 基本的なことだと思いますがよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

childnode1を探して Nameでの出力の後 100の部分へ Readで進めてあげないと Valueでの取得が出来ないと思います b = objXmlR.ReadToDescendant("childnode1") Console.WriteLine(objXmlR.Name) '「childnode1」を出力 if objXmlR.NodeType = XmlNodeType.Element Then   objXmlR.Read()   Console.WriteLine(objXmlR.NodeType ) ' TEXTなら『100』を取得可能   Console.WriteLine(objXmlR.Value) '「」を出力。ここで「100」が出て欲しい End if

trap1130
質問者

お礼

Read()を見落としてました。 うまくいきました。 ありがとうございます。

関連するQ&A

  • VB.NETSystem.Xml 要素数を得るには

    VB.NETでSystem.Xmlを参照設定して以下のXMLファイル(test.xml)のsub4_9のtestの個数を得たいのですが domNode = domDoc.SelectSingleNode("top/sub4_9/test") Console.WriteLine("Count of top/sub4_9/test = " & domNode.?????) というようにしましたが?????の部分にLengthやCountがありません。 また、 rootElement = domDoc.DocumentElement domNodeList = rootElement.GetElementsByTagName("sub4_9/test") Console.WriteLine("Count of top/sub4_9/test = " & domNodeList.Count) というようにもしてみましたが個数は誤った0が返されます。 どのように記述すればsub4_9のtestの個数を得ることができるでしょうか。 ----test.xml------------- <top>  <sub1_1>   <test>123</test>   <test>451</test>    :  </sub1_1>    :  <sub4_9>   <test>432</test>   <test>123</test>   <test>745</test>    :  </sub4_9>    :  <sub9_5>   <test>222</test>    :  </sub9_5> </top> --VB.NET------------------------ Imports System.Xml Imports System.IO Module Module1  Sub Main()   Dim domDoc As New XmlDocument   Dim domNode As XmlNode   Dim domNodeList As XmlNodeList   Dim rootElement As XmlElement   domDoc.Load("test.xml")   rootElement = domDoc.DocumentElement   domNode = domDoc.SelectSingleNode("top/sub4_9/test")   Console.WriteLine("Count of top/sub4_9/test = " & domNode.?????)   domNodeList = rootElement.GetElementsByTagName("sub4_9/test")   Console.WriteLine("Count of top/sub4_9/test = " & domNodeList.Count)  End Sub End Module ----------------------------------- よろしくお願いします (WindpwsXP,VisualStudio2010)

  • VB.2005でXMLを読み込む時のパス設定

    Javaで作成されたXMLをVB.net2005で読み取る際にVBでのXMLへのパス指定に関する質問です。開発環境はVisualStadio2005です。 javaで「D\Sample.xml」(適当なフォルダーに)を吐き出し。 ***VB***↓ Imports System.Xml Module Module1 Sub Main(ByVal args() As String) 'XMLファイルの読取り Dim xmlRdr As New XmlTextReader(args(0).Trim()) xmlRdr.Read() Console.WriteLine("タグ名:" + xmlRdr.LocalName) Console.WriteLine("値:" + xmlRdr.ReadString()) xmlRdr.Close() EnD Sub End Module プロジェクトのプロパティページのデバッグでコマンドライン引数指定で「D\Sample.xml」を指定。 しかし、読み込まれるのは\objの\Releaseと\のDebug上のxmlを読み込んでしまいます。しかも自動バックアップ?の関係で上記コードに無い作動(上記だと読み込みだけだが、先に作ったXML作成モジュールを実行してしまう)でXMLを自動作成してしまいます。 好きな場所のファイル名を指定させる方法を教えて下さい。 普段はEclipse+Javaで開発を行っていてEclipseのパス設定感覚ではうまくいかないのですか?

  • VB.NETのデリゲートについて

    VB.NETのデリゲートについて質問です。 以下のプログラムなのですが、 デリゲート型をインスタンス化しているところで、コンストラクタにパラメータを渡していますが、 そのコンストラクタはどこに定義されているのでしょうか。 (AddressOf t1.Ohayou)というパラメータが渡されていますが、このパラメータを受け取っているコンストラクタがどれなのかが分かりません。 ご教示よろしくお願いいたします。 Delegate Sub Myprint(ByVal s As String) Module Module1 Sub Main() Dim t1 As Test1 = New Test1() Dim t2 As TEst2 = New Test2() Dim d As Myprint = New Myprint(AddressOf t1.Ohayou) d.Invoke("VB太郎") d = New Myprint(AddressOf t2.Konbanwa) d.Invoke("VB太郎") End Sub End Module Class Test1 Sub Ohayou(ByVal s As String) Console.WriteLine("おはようございます。{0}です。", s) End Sub End Class Class Test2 Sub Konbanwa(ByVal s As String) Console.WriteLine("こんばんわ。{0}です。", s) End Sub End Class

  • エクセルからUTF8でファイルを出力する方法。

    エクセルのマクロでシートの内容をXMLに変換して出力するマクロを作成しています。ファイルオブジェクトを利用しているのですが、保存されたドキュメントがシフトJISとなってしまい、そのまま利用できません。 UTF8形式で保存したいのですが、どなたかサンプルなど提供していただけませんでしょうか? 以下、作成中のサンプルコードです。 ---- Sub XMLMake(wksheetname As String) '列名取得 'ファイルオブジェクト作成 Dim objFile As Object Dim objTextFile As Object Dim strFileName As String Set objFile = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFile.CreateTextFile("d:\" & wksheetname & ".xml", True) 'ルートノード作成 objTextFile.WriteLine ("<DATA>") 'ルートノード閉じ objTextFile.WriteLine ("</DATA>") 'ファイルオブジェクト保存 objTextFile.Close MsgBox ("ファイルを作成しました。:" & wksheetname & ".xml") End Sub

  • VB6構造体をVB2008クラスで行う場合

    何方かの質問「VB6構造体をVB2008クラスで行う場合」 の回答プログラムにて参考とさせて頂きましたが 申し訳ありません、初心者しにて・・・・・教えてください。 値を「登録、参照部分」のクラス(抜粋) Public Class Program   Public Shared Sub Main()    (省略)   End Sub End Class 上記部分なのですが (1)Sharedを使用する訳はなんでしょうか?(省いても問題ありませんか?) (2)登録、参照部分のクラスPublic Shared Sub Main()を「登録のメソッド」と「参照のメソッド」に   分けたいのですがどうしてもうまくいきません。   何方か御教授願えないでしょうか? よろしくお願いします。 「以下何方かの質問の回答プログラム」 ■クラス+コレクションクラス Public Class Group   Public MainID As Integer   Public SubID As Integer   Public Value1 As Integer   Public Value2 As Integer End Class Public Class GroupCollection : Inherits System.Collections.Generic.Dictionary(Of Integer, Group)   Public Shadows Sub Add(ByVal Item As Group)     MyBase.Add(Item.SubID, Item)   End Sub End Class Public Class Program   Public Shared Sub Main()     Dim DataDict As New GroupCollection     Dim NewGroup As New Group     NewGroup.MainID = 1     NewGroup.SubID = 101     NewGroup.Value1 = 123     NewGroup.Value2 = 234     DataDict.Add(NewGroup)     Console.WriteLine(DataDict.Item(101).Value2) ' 出力 234   End Sub End Class

  • VB.NETで子ウィンドウの列挙の仕方がわかりません。

    VB.NET+FrameWork1.1環境なのですが、 子ウィンドウの取得の仕方がどうしてもわからず教えて頂きたいです。 Dim Oya As Long Oya = FindWindow(vbNullString, "電卓") Dim Ret As Long Ret = EnumChildWindows(Oya, AddressOf EnumChildWnd, 0) このようにして使うAPIのようなのですが、 デリゲート型をLong型に変換できませんと出てしまいます。 色々検索してみたのですが、それらしい記事が見つかるも どうしても理解できず、正常に動作させることが出来ませんでした。 もうしわけございませんが、どなたか実行可能なコードを書いて いただけないでしょうか。 出力結果はConsole.WriteLineに出るようにして頂けると助かります。 よろしくお願いいたします。m(__)m

  • ArrayListに格納したクラス内のメンバの呼び出し方法(VB)

    お世話になります。VB2003でご質問があります。 通常Arryalistでは下記例1のように使用するのが一般的だと思うのですが、例2のようにArryaListにクラスを追加し、その中のメンバを呼び出すにはどのようにコーディングすればよいのでしょうか? コメントのコンパイルエラー箇所の部分です。 お手数ですが、ご教授よろしくお願いいたします。 ******************************************* (例1) Dim Test as new ArrayList Test.ADD("テスト") console.writeline(test(0)) ******************************************* ******************************************* (例2) Public Class A public strA as string public sub subTest() strA = "おはよう" end sub End Class Public Class B Dim a as new ArrayList a.Add(new A) a(0).subTest '--コンパイルエラー箇所 console.writeline(a(0).strA) '--コンパイルエラー箇所 End Class *******************************************

  • vb.netでByte型の実配列サイズが大きい件

    vb.netでByte型の配列を100byteで宣言しましたが、実際の配列サイズは101byteになりました。 (例) Module Module1 Sub Main() Dim buffSize As Integer = 100 Dim inputBuff(buffSize) As Byte Dim ii As Integer = inputBuff.Length Console.WriteLine("バッファサイズ = {0}", ii) End Sub End Module ここで、iiは、101となります。 CとかC++では、有り得ない仕様ですが、どういう意味が有るのでしょうか? ご教示お願い致します。

  • VB データグリッドビューへの表示

    すみません。教えてください。 ほぼMYSQLのMySqlDataReaderあたりのサンプルなのですが Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ReadMyData("server=localhost;user=root;database=hoge;port=3306;password=xxxx;") End Sub Public Sub ReadMyData(ByVal myConnString As String) Dim mySelectQuery As String = "SELECT OrderID, CustomerID FROM Orders" Dim myConnection As New MySqlConnection(myConnString) Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) myConnection.Open() Dim myReader As MySqlDataReader myReader = myCommand.ExecuteReader() ' Always call Read before accessing data. While myReader.Read() Console.WriteLine((myReader.GetInt32(0) & ", " & myReader.GetString(1))) End While ' always call Close when done reading. myReader.Close() ' Close the connection when done with it. myConnection.Close() End Sub 'ReadMyData End Class でWhile myReader.Read()あたりで呼んでコンソールに書いていっていると思うのですが、これをDataGridView1へ出力したいと思っています。 調べても、いろいろ試してもできません。 どなたかわかる方お教え願います。 MYSQL5.0で VB2008ExpressEditionです。

    • ベストアンサー
    • MySQL
  • VB.NETの関数プロシージャの書き方を教えてください。

    Public A As String という変数にある文字列データが入っていて、 ボタンを押すとその時に変数X,Y,Zに入っている 文字列を検索してButton1_Clickプロシージャ内に戻って来て KekkaX,KekkaY,KekkaZに数値が入るような関数プロシージャなのですが、 呼び出す部分の書き方と関数のプロシージャ名の書き方を教えて頂きたいです。 検索する部分は自分で出来ると思うので大丈夫です。 Public A As String = "何かの文字列" Button1_Click Dim X,Y,Z As String Dim KekkaX,KekkaY,KekkaZ as Integer '変数Aの中からX,Y,Zを検索したい X="*****" Y="ABCDE" Z="#####" GetKensakuKekka(????????) ←この部分の書き方を教えて下さい。 'KekkaX,KekkaY,KekkaZ 内に検索結果を取得したい Console.WriteLine(KekkaX) Console.WriteLine(KekkaY) Console.WriteLine(KekkaZ) End Sub Function GetKensakuKekka (???????????) ←この部分の書き方を教えて下さい。 ・ ・ ・ End Function よろしくお願い致します。

専門家に質問してみよう