2009-07-02 16 views
8

Utilisation des classes .NET System.ServiceModel.Syndication ...Comment ajouter un SyndicationElementExtension Pour un SyndicationItem

Je voudrais ajouter une nouvelle SyndicationElementExtension à un SyndicationItem qui exportera le code XML suivant:

<media:thumbnail url="http://www.foo.com/keyframe.jpg" width="75" height="50" time="12:05:01.123" /> 

Quelque chose le long des lignes de:

syndicationItem.ElementExtensions.Add(new SyndicationElementExtension("thumbnail", "http://video.search.yahoo.com/mrss", ? 

Comment créer simple SyndicationElementExtension avec quelques attributs?

Répondre

10

trouvé la réponse ici: http://msdn.microsoft.com/en-us/library/bb943475.aspx

Le SyndicationElementExtensionCollection classe peut également être utilisé pour créer des extensions d'éléments d'un XmlReader exemple. Cela permet une intégration facile avec les API de traitement XML telles que XElement comme indiqué dans l'exemple de code suivant.

feed.ElementExtensions.Add(new XElement("xElementExtension", 
     new XElement("Key", new XAttribute("attr1", "someValue"), "Z"), 
     new XElement("Value", new XAttribute("attr1", "someValue"), 
     "15")).CreateReader()); 
11

Juste pour simplifier le prochain gars qui vient d'essayer de comprendre cela, voici un exemple de travail d'ajouter une miniature de l'élément de base (RSS 2.0 enceinte dans ce cas) le long des lignes de la documentation:

SyndicationItem item = new SyndicationItem(); 

// populate item... 

item.ElementExtensions.Add(
    new XElement("enclosure", 
     new XAttribute("type", "image/jpeg"), 
     new XAttribute("url", "http://path.to/my/image.jpg") 
    ).CreateReader() 
); 

vous pouvez également vider les attributs et définir le contenu textuel juste après le nom de la balise si vous voulez une simple balise, à savoir <comments>http://my.comments/feed</comments>.

+0

Comment vider les attributs? Si je n'en transmets aucun et ne passe pas l'espace de nom pour un élément, il insère l'attribut xmlns = "" de toute façon. – Hallaghan

+0

Hmm, je ne vois pas cela se produire à mon extrémité, l'attribut 'xmlns =" ​​"' est seulement spécifié sur l'élément externe ''. Pouvez-vous poster un exemple? – nickb