■19689 |
XMLのプレフィックスの出力につきまして |
□投稿者/ ishikawa -(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:"と出力してくれるのですが、 それにあたる文字列は、どうすれば設定できますでしょうか。
よろしければ、アドバイスをいただければと思います。 どうか宜しくお願い致します。
|
|