2012-06-13 8 views
11

ho bisogno di aggiungere i seguenti attributi a un XElement:Come faccio a impostare gli attributi dello spazio dei nomi su un XElement

<xmlns="http://www.mysite.com/myresource" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mysite.com/myresource TheResource.xsd"> 

Aggiunta di loro come un XAttribute non funziona a causa della ":" e sono sicuro comunque non è il modo giusto Come li aggiungo qui?

risposta

13

Ci sono voluti purga a lot of blogs ma alla fine sono venuto con quello che penso sia il modo "giusto" per farlo:

 XNamespace ns = @"http://www.myapp.com/resource"; 
     XNamespace xsi = @"http://www.w3.org/2001/XMLSchema-instance"; 

     var root = new XElement(ns + "root", 
      new XAttribute(XNamespace.Xmlns+"xsi", xsi.NamespaceName), 
      new XAttribute(xsi + "schemaLocation", @"http://www.myapp/resource TheResource.xsd") 
      ); 
7

penso che ciò che si vuole è descritto qui: How to: Create a Document with Namespaces (C#) (LINQ to XML)

Per fare un esempio da esso:

// Create an XML tree in a namespace. 
XNamespace aw = "http://www.adventure-works.com"; 
XElement root = new XElement(aw + "Root", 
    new XElement(aw + "Child", "child content") 
); 
Console.WriteLine(root); 

produrrebbe:

<Root xmlns="http://www.adventure-works.com"> 
    <Child>child content</Child> 
</Root> 
+0

Questa è solo una parte della domanda. Guarda la mia risposta qui sotto per come ho finito per farlo. –

Problemi correlati