У меня есть такой класс:
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);
}
}
Я использую его для создания Atom Feed с пользовательскими расширениями:
var feed = new SyndicationFeed();
feed.ElementExtensions.Add(MyFeedExtensions.MyElement("Testing!"));
Это отлично работает, за исключением того, что канал добавляет мое пространство имен к элементу:
<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>
Есть ли способ зарегистрировать пространство имен с помощью фида, чтобы получить такой вывод?
<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>
В идеале мне бы хотелось, чтобы это также работало, когда у меня есть SyndicationItems с ElementExtensions, поскольку фид должен знать обо всех различных пространствах имен.
(Редактировать: это просто для того, чтобы уменьшить размер XML и сделать его более удобным для чтения людьми)