2013-01-12 29 views
5

Linqからxmlを使用していくつかのxmlファイルを操作する必要があります。既存のXDocumentに名前空間を追加する

私は今、私はそれに名前空間を追加できるように見えることはできません

をロードし、既存のXDocumentを持っています。

私が行います

//Load an existing xml into a XDocument 
XDocument xdoc=XDocument.Load(myXml); 

//Create a namespace 
XNamespace myNS="http://www.w3.org/2001/XMLSchema-instance/MyShinyNewNamespace"; 
xAttribute myAttr=new XAttribute(XNamespace.Xmlns +"myNS",myNS); 

    //Add new namepsace to root 

xdoc.Root ???? 

What do you do here? 

どのように私は私の名前空間を取得していますか?

削除/置換の方法は?

多くのおかげで、すべての

答えて

14

まず、XMLマークアップは、あなたが宣言された名前空間にルート要素だけでなく、それらの子孫要素を置くために、単一の名前空間宣言属性を使用する

<root xmlns="http://example.com/ns"> 
    <foo> 
    <bar>baz</bar> 
    </foo> 
</root> 

を使用することができますしながら、 、ツリーモデルを操作するときは、すべての要素のNameを変更する必要があります。あなたも、その後、特定の接頭辞pfを設定したい場合は

XNamespace myNs = "http://example.com/ns"; 

foreach (XElement el in xdoc.Descendants()) 
{ 
    el.Name = myNs + el.Name.LocalName; 
} 

はaddionally参照

xdoc.Root.Add(new XAttribute(XNamespace.Xmlns + "pf", myNs)); 
関連する問題