C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

XML参照


(過去ログ 7 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■7543 / inTopicNo.1)  XML参照
  
□投稿者/ スライム 伍長(41回)-(2006/10/17(Tue) 09:43:06)

分類:[VB.NET] 


分類:[VB.NET] 

いつもお世話になっています
環境はWindowsXPでVB2003です
属性の値を指定して、その子要素を任意のテキストボックスに表示しようとしています。
<番号 id="1111">
<名前>名前</名前>
<住所>住所</住所>
</番号>
この様な親要素の1111と言う属性idを指定して、子要素を表示する事は出来ました。何も指定しなければ出て来ないです。
Dim doc As New XmlDocument
doc.Load("C:\Address.xml")
Dim root As XmlElement = doc.DocumentElement
Dim nameList As XmlNodeList = root.GetElementsByTagName("名前")
If txt_id.Text = root.GetAttribute("id") Then
   Dim namesElement As XmlElement = nameList.Item(0)
txt_name.Text = (namesElement.InnerXml)
Else
MsgBox("何も無いです")
End If
で、出来たのですが。
<住所録>
<番号 id="255">
<名前>名前</名前>
<住所>日本</住所>
</番号>
</住所録>
で、子要素の255と言うid属性を指定して名前、もしくは住所をテキストボックスに表示させたいのですが、どの様に上の記述を変えて上げれば良いのでしょうか?
どうかよろしくお願いしいます

0
引用返信 編集キー/
■7546 / inTopicNo.2)  Re[1]: XML参照
□投稿者/ 中博俊 神(806回)-(2006/10/17(Tue) 11:07:36)

分類:[VB.NET] 

XmlNode.SelectNodes メソッド
XmlNode.SelectSingleNode メソッド

を使ってXPathでノードを絞り込んで、表示します。

0
引用返信 編集キー/
■7547 / inTopicNo.3)  Re[1]: XML参照
□投稿者/ 魔界の仮面弁士 少佐(181回)-(2006/10/17(Tue) 11:12:08)

分類:[VB.NET] 

> で、子要素の255と言うid属性を指定して名前、もしくは住所をテキストボックスに表示させたいのですが、どの様に上の記述を変えて上げれば良いのでしょうか?

やり方はいろいろとあるかと思いますが、たとえばこんな方法とか。

Imports System
Imports System.Xml
Module Sample
Sub Main()
Dim number As Integer = 255

Dim doc As New XmlDocument()
doc.Load("C:\Address.xml")

Dim XPath As String = String.Format("/住所録/番号[@id='{0}']", number)
Dim item As XmlElement = doc.SelectSingleNode(XPath)
If item IsNot Nothing Then
Console.WriteLine("名前='{0}'", item.SelectSingleNode("名前").InnerText)
Console.WriteLine("住所='{0}'", item.SelectSingleNode("住所").InnerText)
Else
Console.WriteLine("ID={0}のデータは見つかりませんでした。", number)
End If
End Sub
End Module


0
引用返信 編集キー/
■7548 / inTopicNo.4)  Re[2]: XML参照
□投稿者/ スライム 伍長(42回)-(2006/10/17(Tue) 13:29:46)

分類:[VB.NET] 

中博俊さんありがとうございます
XPathのサンプルやトピックが載っているサイトと首っ引きで試しながら記述しています
流石に難しいですね。

魔界の仮面弁士さんありがとうございます
この記述を試したのですが、
If item IsNot Nothing Then
の箇所で、ステートメントの終わりを指定してくださいとエラーが出てしまいました。
この場合、どうしたら良いのでしょうか?

0
引用返信 編集キー/
■7549 / inTopicNo.5)  Re[3]: XML参照
□投稿者/ 魔界の仮面弁士 少佐(182回)-(2006/10/17(Tue) 14:01:30)

分類:[VB.NET] 

> If item IsNot Nothing Then
> の箇所で、ステートメントの終わりを指定してくださいとエラーが出てしまいました。

あぁ、旧バージョンのVBをお使いでしたか。

2005ではなく、VB.NET 2002/2003 を使っている場合には、
 If Not item Is Nothing Then
もしくは
 If IsNothing(item) Then
のように読み替えてみてください。

0
引用返信 編集キー/
■7550 / inTopicNo.6)  Re[4]: XML参照
□投稿者/ スライム 伍長(43回)-(2006/10/17(Tue) 15:26:48)

分類:[VB.NET] 

魔界の仮面弁士さんありがとうございます
イミディエイトウィンドに出ました
そこから任意のテキストボックスに出る様に試行錯誤しているのですが、なかなか出ません。
Console.WriteLine("名前='{0}'", item.SelectSingleNode("名前").InnerText)
の所を
Dim name As XmlElement = item.Item(0)
txt_name.Text = (name("名前='{0}'", item.SelectSingleNode("名前").InnerText).InnerXml)
と言うように変えてみたのですが
'System.NullReferenceException' のハンドルされていない例外が WindowsApplication60.exe で発生しました。
追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。
と言うエラーが出てしまいました。
アドバイスお願いします

0
引用返信 編集キー/
■7551 / inTopicNo.7)  Re[5]: XML参照
□投稿者/ επιστημη 大佐(229回)-(2006/10/17(Tue) 15:52:20)

分類:[VB.NET] 

> イミディエイトウィンドに出ました
> そこから任意のテキストボックスに出る様に試行錯誤しているのですが、なかなか出ません。
> Console.WriteLine("名前='{0}'", item.SelectSingleNode("名前").InnerText)

どこに躓いてるのかわかんないです。
item.SelectSingleNode("名前").InnerText
これをそのまんまテキストボックスに放り込むんじゃダメなんでしょか?


0
引用返信 編集キー/
■7553 / inTopicNo.8)  Re[6]: XML参照
□投稿者/ スライム 伍長(44回)-(2006/10/17(Tue) 16:15:29)

分類:[VB.NET] 

επιστημηさんどうもありがとうございます
おっしゃる通りitem.SelectSingleNode("名前").InnerTextをテキストボックスに放り込む事で、表示されました



解決済み
引用返信 編集キー/
■7555 / inTopicNo.9)  Re[7]: XML参照
□投稿者/ επιστημη 大佐(231回)-(2006/10/17(Tue) 16:41:34)

分類:[VB.NET] 

> おっしゃる通りitem.SelectSingleNode("名前").InnerTextをテキストボックスに放り込む事で、表示されました

# 余計なお世話だけど

"なぜ"これでいいのか/あなたのコードの"どこ"がダメか、わかってますよね?
うやむやなまま"動いたからおっけー"を繰り返しても実になりませんぜ。


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -