2011-03-01 20 views
7

Ben böyle bir sınıfı:Bireysel Elementler yerine Sendikasyon İadesi Adları Ekleme?

public static class MyFeedExtensions 
{ 
    private readonly static XNamespace _namespace = XNamespace.Get(@"http://mynamespace"); 

    public static XElement MyElement(string value) 
    { 
     return new XElement(_namespace + "MyElement", value); 
    } 
} 

Ben özel Uzantılarıyla Atom Besleme üretmek için kullanıyorum: Bu feed benim ad ekler dışında çalışıyor

var feed = new SyndicationFeed(); 
feed.ElementExtensions.Add(MyFeedExtensions.MyElement("Testing!")); 

öğe:

<feed xmlns="http://www.w3.org/2005/Atom"> 
    <title type="text">Hello World!</title> 
    <id>00000000-0000-0000-0000-000000000000</id> 
    <updated>2011-03-01T01:00:53Z</updated> 
    <MyElement xmlns="http://mynamespace">Testing!</MyElement> 
</feed> 

şöyle bir çıktı elde etmek için, bunun yerine yem ile bir ad kaydetmek için bir yolu var mı?

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:my="http://mynamespace"> 
    <title type="text">Hello World!</title> 
    <id>00000000-0000-0000-0000-000000000000</id> 
    <updated>2011-03-01T01:00:53Z</updated> 
    <my:MyElement>Testing!</my:MyElement> 
</feed> 

İdeal olarak, ben ElementExtensions ile SyndicationItems olduğunda besleme tüm çeşitli alanları hakkında bilinmesi gerektiği gibi, çalışmak da bu istiyoruz.

(Düzenleme: Bu XML Boyutu azaltmak ve daha kolay insanlar için okunmasını sağlamak için saf olduğunu): Temel olarak

feed.AttributeExtensions.Add(
    new XmlQualifiedName("my",XNamespace.Xmlns.ToString()), 
    MyFeedExtensions.Namespace.ToString()); 

:

+0

Michael, ikinin aynı olduğunu biliyor musunuz? –

+0

@John Semantik olarak evet, sadece oluşturulan XML'in boyutunu küçültmeye çalışıyorum –

+0

Tüm uzantılarınızı bir sarmalayıcı öğeye koyabilir misiniz, yoksa besleme biçimi buna izin vermiyor mu? –

cevap

10

this question yanıtını Bulunan ve onu adapte Kayıt Feed ile bir xmlns:my Özniteliği, feed içinde SyndicationItem'a eklenmiş olsa bile, ad alanlarını otomatik olarak öğelerden alacaktır.

Doğru değil ama temiz!