Mr.Tの場所

特攻野郎Aチームじゃないよー

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  253  : 記事  0  : コメント  3733  : トラックバック  52

ニュース

  • 性別:男
  • 猫1:まる
  • 猫2:もろ
  • 猫3:にゃん左部郎
  • タバコ:男は黙ってJPS
[わんくま同盟] C#, VB.NET 掲示板

書庫

日記カテゴリ

Mr.Tです、こんにちは。

 

私自身、XMLってのはほとんど利用したことがない人で、使い道もよくわかっていないのですが、

TreeViewコントロールを使おうと決定してから、XMLでうんうん悩んでプログラムしています。

#System.Web.UI.WebControls.TreeViewクラスの方です。

 

TreeViewにはXMLDataSourceを利用して、データをバインドすることにしたので、

 

XMLDataSource.data = XMLデータ

TreeView.DataSourceID = XMLDataSource.ID

 

みたいな感じにしてやればあっさりバインドしてくれます。

 

さて、簡単にSQLServerでテーブルから、XMLとしてデータを取り出そうという場合、

 

select hoge1,hoge2,hoge3 from Table for XML AUTO

 

と書けば、すぐにXMLデータが取り出せます。

 

詳細にしたい場合は、Auto以外の指定もできるので、下のところを参考にしてみればよいと思います。

RAW モードの使用
AUTO モードの使用
EXPLICIT モードの使用

 

私がやっていたことは、

<工場からこうば>

 <工場 CD="1" Name="本社工場">

   <こうば CD="111" Name=”Aこうば”>

           <製品 CD="111000" Name="製品A"/>

   </こうば>      

  </工場>

</工場からこうば>

こんな感じのデータをイメージしてました。全てのノードで、属性が、CDとNameの二つがあります。

 

なので、これをとりだそうとして、Selectをかけようと思い、

select 工場.工場コード as [CD],工場.工場名 as [Name]

           ,こうば.こうばコード as [CD],こうば.こうば名 as [Name]

          ,製品.製品コード as [CD],製品.製品名 as [Name]

from T_工場 工場

inner join T_工場リレーション

....

inner join T_こうば こうば

.....

inner join T_こうばリレーション

.....

#工場リレーションなどのテーブルは、工場とこうばの結びつきのデータが入ってます。

 

ところが、これをXML AUTOで出そうとすると怒られる。

 

列名 'CD' が繰り返されています。同じ XML タグに同じ属性を複数回生成することはできません。

 

 

メッセージから、すると、一つのノードに対して、CDを複数指定しているということだから、きちんとノードとして
それぞれのデータが認識されていないということになる。

ううん?なぜ、と思い、色々調べてみたのだけど、どうもいまいちわからない。

上記リンク先のAUTOモードの使用では、このように説明されている。

FROM 句の各テーブルは XML 要素として表され、そのうち少なくとも 1 列が SELECT 句のリストに含められます。FOR XML 句で省略可能な ELEMENTS オプションを指定すると、SELECT 句のリストに含められる列は属性またはサブ要素にマップされます。

生成される XML 内の要素が入れ子になった XML 階層は、SELECT 句で指定されている列で識別されるテーブルの順序に基づきます。そのため、SELECT 句で列名を指定する順序は重要です。先頭、つまり識別された左端のテーブルにより、生成される XML ドキュメント内の最上位要素が形成されます。SELECT ステートメント内の列で識別された左から 2 番目のテーブルにより、最上位要素内のサブ要素が形成されます。以降についても同様です。

テーブルが要素となり、指定している順番にサブ要素となる(つまり子になる)。同じテーブルから参照されるデータは、要素の属性となる

ということが書いてあります。

なのに、これじゃあ、指定ができない。

 

で、試行錯誤(Try&Error)してみたところ、こういうのはできるようです。

with 工場 as (

  select ~ from T_工場

inner join T_工場リレーション

on ....

)

,with こうば as (

select ~ from T_こうば

 inner join T_こうば

on ....

)

select 工場.工場コード as [CD],工場.工場名 as [Name]

           ,こうば.こうばコード as [CD],こうば.こうば名 as [Name]

          ,製品.製品コード as [CD],製品.製品名 as [Name]

from 工場

inner join こうば

on 工場.こうばコード= こうば.こうばコード

....

 

CTE(共通テーブル式)を利用して、こういう形にするとできるんです。やっていることは一緒なんですけどね。

 

CTEを使った場合は、T_~リレーションというテーブルは最終XMLとして利用するSQL内には出てきませんので、

それが原因なのかなと思ってみたりもしたのですが、意味がよくわかりません。

今でも納得はできていないのです。

投稿日時 : 2008年2月15日 18:35

コメント

# re: SQLServer2005で、FOR XML を使うと「同じ XML タグに同じ属性を複数回生成することはできません」と怒られる。 2008/02/16 17:45 けろ-みお
XML AUTOは、あまり好きじゃないです。
sp_xml_preparedocumentで、ノードの階層作らせるやり方を
よく使いますね。
ただ、原始的な使い方になってしまいますので、お勧めできるかと
いうと、微妙なところではあります・・・


# re: SQLServer2005で、FOR XML を使うと「同じ XML タグに同じ属性を複数回生成することはできません」と怒られる。 2008/02/17 21:17 Mr.T
コメントありがとうございます。

XML AUTOは、はっきりいってざっくりしたものしか
作ってくれないですよね。

まあ、単純なツリーだったので、XML AUTO
でも十分だろうと判断したのですが、
にしてもなぜCTEのような形だとOKなのかイマイチ納得ができません。

>ただ、原始的な使い方になってしまいますので、お勧めできるかと
いうと、微妙なところではあります・・・

なるほど...やはりゴリゴリな形になるということですね。
情報、ありがとうございました。


# hmRqsnZGWvkXWoXAS 2018/12/07 22:48 https://loop.frontiersin.org/people/646606/bio
very handful of internet sites that take place to become in depth beneath, from our point of view are undoubtedly well worth checking out

# JoUSFZOXiveLdmcsq 2018/12/10 23:51 https://sportywap.com/contact-us/
Wow, incredible blog layout! How long have you been blogging for? you make blogging look easy. The overall look of your web site is wonderful, let alone the content!

# LYtFijZHWubPEdB 2018/12/11 2:23 https://www.bigjo128.com/
Photo Gallery helps you organize and edit your photos, then share them online.

# mrfVFOWMvOaC 2018/12/11 18:44 http://joanamacinnis6ij.webdeamor.com/it-can-be-pa
Wow, great article post.Thanks Again. Keep writing.

# gvbEyyMlwwXLGaYm 2018/12/12 11:26 http://bgtopsport.com/user/arerapexign302/
There is visibly a bundle to identify about this. I feel you made some good points in features also.

# PyuSByiuLfSltPIas 2018/12/13 0:58 http://aressomochig.mihanblog.com/post/comment/new
Wow, great article post.Really looking forward to read more. Much obliged.

# RNGXEhojoyeiP 2018/12/13 11:29 http://wantedthrills.com/2018/12/12/saatnya-segera
More about the author Why does Firefox not work since I downloaded yahoo instant messenger?

Ultimately, a problem that I am passionate about. I have looked for details of this caliber for the previous various hrs. Your internet site is tremendously appreciated.

# PACXNYCleWtGyLyle 2018/12/13 16:34 http://supernaturalfacts.com/2018/12/12/ciri-khas-
You made some decent factors there. I appeared on the internet for the difficulty and located most people will go along with along with your website.

# kkRpFmhiGiwt 2018/12/13 19:09 http://indianachallenge.net/2018/12/12/m88-asia-te
Valuable information. Lucky me I found your website by accident, and I am shocked why this accident did not happened earlier! I bookmarked it.

# TzRzwAuzCrFnghww 2018/12/13 20:40 http://www.soosata.com/blogs/22192-the-value-and-f
Just wanna tell that this is very helpful, Thanks for taking your time to write this.

# XGLYwbnmjpWfVZC 2018/12/14 3:58 http://www.clinicaveterinariaromaeur.it/index.php?
You completed approximately first degree points there. I searched by the internet for the problem and found most individuals will chance collected with down with your website.

# oIxDRGbFLITNKxocrpG 2018/12/14 6:30 https://penzu.com/p/16b71f65
With havin so much written content do you ever run into

# MJnkqvCCfUvQmTMY 2018/12/14 8:59 https://visataxi.wordpress.com/
Really appreciate you sharing this blog.Thanks Again. Want more.

# LhLkRuhIxwset 2018/12/15 16:23 https://indigo.co/Category/polythene_poly_sheet_sh
I'а?ve recently started a blog, the info you provide on this website has helped me tremendously. Thanks for all of your time & work.

Your style is really unique in comparison to other folks I ave read stuff from. Thanks for posting when you have the opportunity, Guess I will just bookmark this web site.

# FOUKnWQcCegwaQWGB 2018/12/16 4:25 http://eileensauretavh.electrico.me/after-all-it-w
wonderful issues altogether, you simply won a new reader. What would you recommend in regards to your post that you just made some days ago? Any certain?

# ZDcJOdbLMCkbMAWITF 2018/12/16 6:49 http://turismoporelmundom10.envision-web.com/by-20
Thankyou for this wonderful post, I am glad I detected this site on yahoo.

# eRQIjPJUUVD 2018/12/17 21:25 https://www.supremegoldenretrieverpuppies.com/
Your style is very unique in comparison to other folks I have read stuff from. Many thanks for posting when you have the opportunity, Guess I will just book mark this web site.

# CsoMmCJbYgh 2018/12/17 23:56 http://www.great-quotes.com/user/boulth
Looking forward to reading more. Great post.Thanks Again. Much obliged.

# PBasPyPXqXnjoDQF 2019/01/29 20:12 https://ragnarevival.com
Wow, great blog.Much thanks again. Want more.

# RwJJElmHWfxzJP 2019/02/19 17:51 https://www.smashwords.com/profile/view/zipperllam
Thanks-a-mundo for the blog article.Really looking forward to read more. Really Great.

# doxycycline 100mg price - https://doxycyclinesale.pro/# 2023/04/22 3:57 Doxycycline
doxycycline 100mg price - https://doxycyclinesale.pro/#

# Abortion pills online - https://cytotecsale.pro/# 2023/04/29 4:33 Cytotec
Abortion pills online - https://cytotecsale.pro/#

# walgreens sleep aids over the counter https://overthecounter.pro/# 2023/05/08 22:37 OtcJikoliuj
walgreens sleep aids over the counter https://overthecounter.pro/#

# best treatment for ed: https://edpills.pro/# 2023/05/16 3:11 EdPillsPro
best treatment for ed: https://edpills.pro/#

# generic over the counter prednisone https://prednisonepills.pro/# - prednisone 10 mg tablets 2023/06/05 5:13 Prednisone
generic over the counter prednisone https://prednisonepills.pro/# - prednisone 10 mg tablets

# how to cure ed https://edpill.pro/# - best treatment for ed 2023/06/27 14:31 EdPills
how to cure ed https://edpill.pro/# - best treatment for ed

# buy paxlovid online https://paxlovid.pro/# - paxlovid for sale 2023/07/03 3:50 Paxlovid
buy paxlovid online https://paxlovid.pro/# - paxlovid for sale

# paxlovid cost without insurance https://paxlovid.life/# paxlovid generic 2023/07/26 6:09 Paxlovid
paxlovid cost without insurance https://paxlovid.life/# paxlovid generic

# natural ed remedies https://edpillsotc.store/# - new treatments for ed 2023/10/08 1:03 EdPills
natural ed remedies https://edpillsotc.store/# - new treatments for ed

# comprare farmaci online all'estero https://farmaciait.pro/ farmacia online senza ricetta 2023/12/04 10:08 Farmacia
comprare farmaci online all'estero https://farmaciait.pro/ farmacia online senza ricetta

Post Feedback

タイトル
名前
Url:
コメント