2013年12月4日水曜日

【LINQ to XML】名前空間の記述でエラー

LINQ to XML でXMLを操作する際に
「System.Xml.XmlException: ':' 文字、16 進数値 0x3A を名前に含むことはできません。」
というエラーが吐出されて困ったのでメモ。

エラーになったのは以下のようなコード(C#)

var xml = new XElement("Root", "Root Value", 
              new XAttribute("xml:lang","ja"));

コードとエラーを見て頂ければ分かると思いますが、
「:」を属性名で使ってはいけないということです。
(要素名にも使ってはいけません)
 「xml:lang」の「xml」の部分は名前空間として記述しなくてはなりません。

以下が修正したコードです。

var xml = new XElement("Root", "Root Value", 
              new XAttribute(XNamespace.Xml + "lang","ja"));

これで以下のようなXMLが作成されます
Root Value 


(参考)
XNamespaceクラス
http://msdn.microsoft.com/ja-jp/library/system.xml.linq.xnamespace(v=vs.110).aspx

0 件のコメント:

コメントを投稿