■19689 / inTopicNo.1) |
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:"と出力してくれるのですが、
それにあたる文字列は、どうすれば設定できますでしょうか。
よろしければ、アドバイスをいただければと思います。
どうか宜しくお願い致します。
|
|