2013-01-12 16 views
5

Potrzebuję manipulować niektóre pliki xml przy użyciu Linq do xml.Dodawanie obszaru nazw do istniejącego XDocument

Mam istniejący XDocument że załadować

Teraz nie mogę wydawać się, aby móc dodać nazw do niego.

zrobić:

//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? 

Jak mogę odzyskać moje nazw?

Jak usunąć/zastąpić?

wiele dzięki

Odpowiedz

14

Przede wszystkim, podczas gdy znaczniki XML pozwala na używanie

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

użyć pojedynczy atrybut deklaracji przestrzeni nazw, aby umieścić element główny, jak i tych potomnych elementów do deklarowanej nazw , kiedy manipulujesz modelem drzewa, musisz zmienić Name wszystkich elementów, więc potrzebujesz np.

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

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

Jeśli też chcesz ustawić pewną prefiks pf następnie addionally ustawić

xdoc.Root.Add(new XAttribute(XNamespace.Xmlns + "pf", myNs)); 
Powiązane problemy