2013-03-28 11 views
10

Używam System.ServiceModel.Syndication.SyndicationFeed aby utworzyć kanał RSS z której otrzymuję to:SyndicationFeed zmiana nazw prefiks od A10 do atomu

<rss xmlns:a10="http://www.w3.org/2005/Atom" version="2.0"><channel>...</channel></rss> 

To wszystko działa jak po maśle, z wyjątkiem kiedy validate my feed .

Walidator narzeka na prefiks a10 przestrzeni nazw i sugeruje, że zamiast tego używam atomu. To brzmi rozsądnie ... ale nie widzę prostego sposobu na zmianę prefiksu.

Jakieś pomysły dotyczące sposobów zmiany prefiksu?

+0

To wygląda jak masz faktycznie wyjście swój kanał jako RSS 2.0, nie Atom 1.0 - zobaczyć różne przykłady wyjściowe XML w http://msdn.microsoft.com/en-us/library/system. servicemodel.syndication.syndicationfeed.aspx # code-snippet-3 – CBroe

+1

Tak, to jest rss, to jest to, czego się spodziewam. Z jakiegoś powodu weryfikator feedów sugeruje posiadanie łącza z powrotem do siebie, używając przestrzeni nazw atomu, więc próbuję się do tego przyłączyć. Dodaję taki link - ale wtedy walidator chce, żeby a10 było atom. –

+0

Ostrzeżenie dla walidatora to tylko sugestia. Nie ma powodu, dla którego * nie powinieneś * zmieniać prefiksu, ale żaden poprawny analizator nie dba o różnicę. – Joe

Odpowiedz

18

Aby określić niestandardową nazwę rozszerzeń atomowych trzeba wyłączyć SerializeExtensionsAsAtom na formater paszowym:

var formatter = feed.GetRss20Formatter(); 
formatter.SerializeExtensionsAsAtom = false; 

Następnie trzeba dodać przestrzeń nazw

XNamespace atom = "http://www.w3.org/2005/Atom"; 

feed.AttributeExtensions.Add(new XmlQualifiedName("atom", XNamespace.Xmlns.NamespaceName), atom.NamespaceName); 

I teraz można zacząć używać rozszerzenia

Na koniec wpisz informację o strumieniu odpowiedzi m:

formatter.WriteTo(new XmlTextWriter(Response.Output)); 
Powiązane problemy