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

わんくま同盟

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

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


(過去ログ 38 を表示中)
■19689 / )  XMLのプレフィックスの出力につきまして
□投稿者/ ishikawa (1回)-(2008/05/27(Tue) 19:38:25)

分類:[XML] 

初めて質問させていただきます。
よろしくお願い致します。

Linqを用いて、以下のような XMLを出力しようとしております。

<SampleXML xmlns="http://www.tempuri.org1" 
xmlns:aaa="http://www.tempuri.org2"  
bbb:ccc=" http://www.tempuri.org3" >   ←問題の箇所です(bbb:)
(以下略)

問題となっているのが、属性の名前空間のところです。

XNamespace ns = "http://www.tempuri.org1";
XName problem;
XElement pSample = new XElement("SampleXML",
	new XAttribute("xmlns", "http://www.tempuri.org1"),
	new XAttribute(XNamespace.Xmlns + "aaa", "http://www.tempuri.org2"),
	new XAttribute(problem, "http://www.tempuri.org3"));  ←問題の箇所です

属性の名前空間は、XName で指定される必要があります。
XName は、皆様ご存知の通り、コンストラクタを持たず、
文字列を指定することで、通常、設定できてしまいます。

しかし、名前空間を持つ場合、どのように記述すればよろしいでしょうか。

new XAttribute("bbb:ccc", "http://www.tempuri.org3")

というような記述は、当然ながら、エラーになってしまいます。
(勝手にコロンを記入されては、おかしくなってしまいますので・・・。)
ですが、下記のように記述すると、

XNamespace ns = "http://www.tempuri.org1";
XNamespace ddd;
(中略)
XName problem = ddd + "ccc";
XElement pSample = new XElement("SampleXML",
	new XAttribute("xmlns", "http://www.tempuri.org1"),
	new XAttribute(XNamespace.Xmlns + "aaa", "http://www.tempuri.org2"),
	new XAttribute(problem, "http://www.tempuri.org3"));

pSample.ToString()とした場合、

<SampleXML xmlns="http://www.tempuri.org1" 
xmlns:aaa="http://www.tempuri.org2"  
p0:ccc=" http://www.tempuri.org3" >   ←p0

と出力されてしまいます。
(名前を指定していないためか、"p0"という出力になってしまいます。)

XName はXNamespaceと自身の名称からなっているわけですが、
XNamespaceの「呼び名」を指定する(bbb:というように)ことは可能でしょうか?
XNamespace.Xmlnsであれば、自動的に"xmlns:"と出力してくれるのですが、
それにあたる文字列は、どうすれば設定できますでしょうか。

よろしければ、アドバイスをいただければと思います。
どうか宜しくお願い致します。

返信 編集キー/


管理者用

- Child Tree -