2009-08-22 21 views
7

Estoy escribiendo un código para generar un archivo opml a partir de una lista de fuentes RSS (analizadas) en mi sitio. El usuario seleccionará casillas de verificación de una cuadrícula de datos de feeds rss en mi sitio, y al presionar un botón, se producirá un gran esfuerzo.Usando xname en Linq-to-xml

todos modos, tengo código como este:

 foreach (var v in list) 
    { 
     XName xname; 

     doc.Element("channel").Add(
      new XElement("title", v.Name), 
      new XElement("description", "First Article Description"), 
      new XElement("pubDate", DateTime.Now.ToUniversalTime()), 
      new XElement("guid", Guid.NewGuid())); 

    } 

lista es una colección de objetos de alimentación (por ejemplo Hanselman RSS, codinghorror RSS, etc). La cuadrícula de datos tendrá una casilla de verificación y presionando el botón debajo de esta cuadrícula, se ejecutará el código anterior (también obtuve el código para las declaraciones xml, etc.).

Cuando uso el método Element (...), necesito proporcionar XName. Esto tiene un constructor interno que no puedo usar. ¿Cómo puedo pasar este parámetro?

Respuesta

11

Hay un método estático en XName llamado Obtener que le permite crear un XName. Sin embargo, también hay una conversión implícita de la cadena a XName, así que si sólo introducir una cadena, debe ser capaz de conver a XName y trabajar sin problemas

2

Crear un objeto XNamespace y utilizar el operador de suma:

XName name = (XNamespace)"http://schemas.xyz.com/namespaceUri" + "tagName"; 
15

también puede encerrar un espacio de nombres entre llaves:

XName name = "{http://schemas.xyz.com/namespaceUri}tagName";