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

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

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

Re[4]: XMLの解析方法(同一タグの値の取り方)


(過去ログ 99 を表示中)

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

■58888 / inTopicNo.1)  XMLの解析方法(同一タグの値の取り方)
  
□投稿者/ やんまー (38回)-(2011/05/02(Mon) 20:57:03)

分類:[VB.NET/VB2005 以降] 

XMLの解析方法(同一タグの値の取り方)

XMLの解析方法でうまくできなくて悩んでいます。
それは、以下のように複数のタグがある場合の解析方法なのですが。。。

サンプル
-----------------------
<root>
<a>
<b>b-tag</b>
<c>c-tag</c>
<d>d-tag</d>
<e>e-tag</e>
</a>
<a>
<b>b2-tag</b>
<c>c2-tag</c>
<d>d2-tag</d>
<e>e2-tag</e>
</a>
</root>
------------------------


まずは以下のような方法を考えました。

【@】
Dim list As XmlNodeList = doc.GetElementsByTagName("b")
Dim node As XmlNode
For Each node In list
'node.innertext を適当な変数に格納
Next

さらに

【A】
list = doc.GetElementsByTagName("c")
For Each node In list
'node.innertext を適当な変数に格納
Next


のようにすれば、
@の1番目とAの1番目、@の2番目とAの2番目・・・
とセットにすればいいかと思ったのですが、
xmlのbタグcタグがあったりなかったりすると、これではだめです。

どうすれば、良いのでしょうか・・・

引用返信 編集キー/
■58889 / inTopicNo.2)  Re[1]: XMLの解析方法(同一タグの値の取り方)
□投稿者/ shu (668回)-(2011/05/02(Mon) 21:33:51)
No58888 (やんまー さん) に返信
Dim stm = 〜 Xml読み込み用ストリーム
Dim doc As New XmlDocument()
doc.Load(stm)

For Each nd As XmlNode In doc.ChildNodes
Console.WriteLine(String.Format("{0} = {1}", nd.Name, nd.InnerText))
For Each nd2 As XmlNode In nd.ChildNodes
Console.WriteLine(String.Format("{0}-{1} = {2}", nd.Name, nd2.Name, nd2.InnerText))
For Each nd3 As XmlNode In nd2.ChildNodes
Console.WriteLine(String.Format("{0}-{1}-{2} = {3}", nd.Name, nd2.Name, nd3.Name, nd3.InnerText))
Next
Next
Next

stm.Close()
引用返信 編集キー/
■58890 / inTopicNo.3)  Re[2]: XMLの解析方法(同一タグの値の取り方)
□投稿者/ やんまー (39回)-(2011/05/02(Mon) 22:22:29)
shu さま

ありがとうございます!

早速試してみます!
引用返信 編集キー/
■58891 / inTopicNo.4)  Re[2]: XMLの解析方法(同一タグの値の取り方)
□投稿者/ やんまー (40回)-(2011/05/02(Mon) 23:04:28)
shu さま

こんなかんじに取れました!
何とかなりそうです!
感謝です!


root = b-tagc-tagd-tage-tagb2-tagc2-tagd2-tage2-tag
root-a = b-tagc-tagd-tage-tag
root-a-b = b-tag
root-a-c = c-tag
root-a-d = d-tag
root-a-e = e-tag
root-a = b2-tagc2-tagd2-tage2-tag
root-a-b = b2-tag
root-a-c = c2-tag
root-a-d = d2-tag
root-a-e = e2-tag
引用返信 編集キー/
■58892 / inTopicNo.5)  Re[3]: XMLの解析方法(同一タグの値の取り方)
□投稿者/ やじゅ (1881回)-(2011/05/02(Mon) 23:53:51)
やじゅ さんの Web サイト
No58891 (やんまー さん) に返信

別案です。 "<a>"はこの掲示板では投稿できなかったため、"<t>"に変更してあります。
Dim ds As New DataSet
Dim dt As DataTable
Dim xml As String = "<?xml version=""1.0""?>" & _
                    "<root>" & _
                    "<t>" & _
                    "<b>b-tag</b>" & _
                    "<c>c-tag</c>" & _
                    "<d>d-tag</d>" & _
                    "<e>e-tag</e>" & _
                    "</t>" & _
                    "<t>" & _
                    "<b>b2-tag</b>" & _
                    "<c>c2-tag</c>" & _
                    "<d>d2-tag</d>" & _
                    "<e>e2-tag</e>" & _
                    "</t>" & _
                    "</root>"

Dim text As TextReader = New StringReader(xml)

ds.ReadXml(text, XmlReadMode.InferSchema)
dt = ds.Tables("t")
For Each row As DataRow In dt.Rows
    Debug.Print(row("b").ToString())
    Debug.Print(row("c").ToString())
    Debug.Print(row("d").ToString())
    Debug.Print(row("e").ToString())
Next

引用返信 編集キー/
■58893 / inTopicNo.6)  Re[4]: XMLの解析方法(同一タグの値の取り方)
□投稿者/ やんまー (41回)-(2011/05/03(Tue) 01:26:22)
やじゅ様

別案ありがとうございます!

試してみます!!
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -