¿Cómo puedo escribir xml con un espacio de nombres y prefijo con XElement?

Esta puede ser una pregunta xml para principiantes, pero ¿cómo puedo generar un documento xml que tenga el siguiente aspecto?

 test another test  

Si puedo escribir esto, puedo hacer que el rest de mi problema funcione.

Idealmente, me gustaría usar LINQ to XML (XElement, XNamespace, etc.) con c #, pero si esto se puede hacer más fácil / mejor con XmlDocuments y XmlElements, lo haría.

¡¡¡Gracias!!!

Aquí hay un pequeño ejemplo que crea la salida que desea:

 using System; using System.Xml.Linq; class Program { static void Main() { XNamespace ci = "http://somewhere.com"; XNamespace ca = "http://somewhereelse.com"; XElement element = new XElement("root", new XAttribute(XNamespace.Xmlns + "ci", ci), new XAttribute(XNamespace.Xmlns + "ca", ca), new XElement(ci + "field1", "test"), new XElement(ca + "field2", "another test")); } } 

Prueba este código:

 string prefix = element.GetPrefixOfNamespace(element.Name.NamespaceName); string name = String.Format(prefix == null ? "{1}" : "{0}:{1}", prefix, element.Name.LocalName);` 

Espero que obtenga información útil de este hilo: el espacio de nombres predeterminado de XElement en los atributos proporciona un comportamiento inesperado

EDITAR:

Otras preguntas frecuentes en – http://social.msdn.microsoft.com/Forums/en-US/xmlandnetfx/thread/c0648840-e389-49be-a3d2-4d5db17b8ddd

 XNamespace ci = "http://somewhere.com"; XNamespace ca = "http://somewhereelse.com"; XElement root = new XElement(aw + "root", new XAttribute(XNamespace.Xmlns + "ci", "http://somewhere.com"), new XAttribute(XNamespace.Xmlns + "ca", "http://somewhereelse.com"), new XElement(ci + "field1", "test"), new XElement(ca + "field2", "another test") ); Console.WriteLine(root); 

Esto debería dar salida

  test another test  

Para XmlDocument es similar:

 XmlAttribute attribute1 = sessionXml.CreateAttribute("s", "Attribute1", namespaceURI); XmlAttribute attribute2 = sessionXml.CreateAttribute("s", "Attribute2", namespaceURI); XmlAttribute attribute3 = sessionXml.CreateAttribute("s", "Attribute3", namespaceURI); XmlAttribute attribute4 = sessionXml.CreateAttribute("s", "Attribute4", namespaceURI);