2009-08-22 16 views
7

Sitemde bir rss beslemeleri listesinden (ayrıştırılmış) bir opml dosyası oluşturmak için bir kod yazıyorum. Kullanıcı, sitemdeki bir rss beslemesi veri kutusundan onay kutularını seçecek ve bir düğmeye bastığınızda, ağır kaldırma işlemi gerçekleşecek.Linq-to-xml içinde xname kullanma

Yine, bu gibi bir kod vardır:

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

    } 

listesi, bir besleme nesnelerin toplanması (örneğin Hanselman RSS beslemesi, codinghorror RSS besleme, vb). Datagrid'inde bir kontrol kutusu ve bu kılavuzun altındaki tuşa basıldığında, yukarıdaki kod çalıştırılacaktır (xml bildirimleri için de kodum var).

Element (...) yöntemini kullandığımda, XName vermem gerekiyor. Bunun kullanamayacağım bir dahili kurucusu var. Bu parametreyi nasıl geçebilirim?

cevap

11

XName üzerinde adlı bir statik yöntem vardır. Bu, bir XName oluşturmanıza olanak sağlar. Ancak, Xname için dizeden bir örtülü cast da var, bu yüzden sadece bir dize girerseniz, Xname için conver ve sorunlara

2

olmadan işe bir XNamespace nesne oluşturun ve toplama operatörünü kullanmak mümkün olmalıdır:

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

Ayrıca küme parantezi bir ad çevreleyebileceğim:

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