- PR -

作成するXMLに複数のXML名前空間を指定したい

1
投稿者投稿内容
ナヲ
常連さん
会議室デビュー日: 2004/02/25
投稿数: 32
投稿日時: 2007-03-12 21:58
こんにちは。

VB2005でXML文書を出力するコンソールアプリケーションを作成しています。

型やリレーションの定義をしたDataSetに値をセットして、WriteXmlする方法を取っています。
作成したいXML文書は、下記のようにルート要素に使用する名前空間とプリフィックスを記述したものです。
<root xmlns:book="http://hoge.com/ns/book/" xmlns:prof="http://hoge.com/ns/profile/">
  <book:title>ほげほげ</book:title>
  <prof:title>山田花子</prof:title>

指定したいXML名前空間が一つだけであれば、
以下のように、DataSetに対してNamespaceとPrefixを、DataTableとColumnにはPrefixを指定することで
できたのですが、複数の場合はどのようにコーディングすればよいのかがわかりませんでした。

Dim ds As DataSet = New DataSet
ds.DataSetName = "root"
ds.Namespace = "hogehogehoge"
ds.Prefix = "hoge"

複数のXML名前空間及びprefixを指定するにはどのような方法があるのでしょうか?
よろしくお願いいたします。
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2007-03-13 00:22
ルート要素に名前空間とプリフィックスを記述する」方法を知りたくて質問したのでしょうか?
「複数のXML名前空間及びprefixを指定する」方法を知りたくて質問したのでしょうか?

前者だったら、少なくともDataSetでの実現は無理な気がします。しっかりと調べたわけではないので、断言はできません。 (前者なら、私に言えることはこれ以上ありません・・・。)

後者だったら、DataTableにもDataColumnにもNamespaceプロパティとPrefixプロパティの両方が用意されているので、適切に設定してください。また、スキーマが静的なものであるのならば、「厳密に型指定されたデータセット」を使ったほうがいいです。静的ではあるけれども、実行時にならなければ取得できないのであれば、DataSet.ReadXmlSchemaメソッドでスキーマの読み込みを行うのがいいです。

# サンプルだからだとは思いますが、bookやprofileといった要素を名前空間で示すのはあまりよろしくないかと思います。
ナヲ
常連さん
会議室デビュー日: 2004/02/25
投稿数: 32
投稿日時: 2007-03-13 10:19
>よこけんさま

ルート要素に複数の名前空間とプリフィックスを記述する」方法を知りたくて質問しました。
DataSetでは無理なのですか・・・。
違う方法を検討しなければいけませんね。
ありがとうございます。

また、ご指摘の件ですが、実際は、DataSet.ReadXmlSchemaメソッドでXMLスキーマを読み込んでいます。
それを元に出力用のDataSetを編集している次第です。
あと、bookやprofはご想像の通り、質問書込み用のサンプルです。
1

スキルアップ/キャリアアップ(JOB@IT)