2009-08-22 1 views
7

Sto scrivendo del codice per generare un file opml da un elenco di feed rss (analizzati) sul mio sito. L'utente selezionerà le caselle di controllo da un datagrid di feed RSS sul mio sito, e quando si preme un pulsante, il sollevamento pesante avverrà.Utilizzo di xname in Linq-to-xml

Comunque, ho il codice come questo:

 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 è una collezione di oggetti di alimentazione (ad esempio Hanselman rss feed, codinghorror rss feed, ecc). Il datagrid avrà una casella di controllo e premendo il pulsante sotto questa griglia, il codice sopra verrà eseguito (ho anche ottenuto il codice per le dichiarazioni xml ecc.).

Quando utilizzo il metodo Elemento (...), è necessario fornire XName. Questo ha un costruttore interno che non posso usare. Come posso passare questo parametro?

risposta

11

C'è un metodo statico su XName chiamato Get che consente di creare un XName. Tuttavia, v'è anche un cast implicita da stringa a XName, quindi se è sufficiente inserire una stringa, dovrebbe essere in grado di conver a XName e lavorare senza problemi

2

Creare un oggetto XNamespace e utilizzare l'operatore di addizione:

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

È inoltre possibile racchiudere uno spazio dei nomi tra parentesi graffe:

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