2012-06-13 17 views
11

tengo que añadir los siguientes atributos a un XElement:¿Cómo establecer los atributos de espacio de nombres en una 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"> 

Adición de ellos como un XAttribute no funciona debido a la ":" y estoy seguro no es la forma correcta de todos modos. ¿Cómo agrego esto allí?

Respuesta

13

Tomó fregar a lot of blogs pero finalmente vino con lo que creo que es la forma "correcta" de hacer esto:

 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

creo que lo que quiere que se describe aquí: How to: Create a Document with Namespaces (C#) (LINQ to XML)

Para tomar un ejemplo de ello:

// 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); 

produciría:

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

Esto es solo una parte de la pregunta. Vea mi respuesta a continuación para saber cómo terminé haciéndolo. –

Cuestiones relacionadas