Вопрос

Я пишу RSS-канал (ради развлечения) и просматриваю спецификацию. здесь.

RSS — это диалект XML.Все файлы RSS должны соответствовать спецификации XML 1.0, опубликованной на веб-сайте Консорциума World Wide Web (W3C).

Очевидно, это означает, что я не подаю «чистый» RSS, если выбираю вариант JSON.Тем не менее, если я буду соответствовать остальной части спецификации, вероятно ли, что (индивидуальные) читатели смогут ее проанализировать?

Другими словами, если я соответствую спецификации, но использую JSON вместо XML, будет ли это пригодным для использования RSS-каналом?

редактироватьЯ не уверен, что я ясно выразился.XML здесь не используется.Я хочу написать что-то похожее на RSS (то есть XML), используя вместо этого JSON.Очевидно, что читателям такого канала необходимо будет понимать формат JSON.Мне было интересно, было ли это уже сделано.Существуют ли сервисы, которые подают фид таким образом?Существуют ли программы, которые могут агрегировать/понимать этот формат.Является ли спецификация RSS (без части XML) полезной спецификацией, которой следует соответствовать в этом случае?

рг

{
"title":"example.com",
"link":"http://www.example.com/",
"description":"Awesome news about junk",
"items":[
    {
        "title":"An article",
        "link":"http://www.example.com/an-article",
        "descrition":"Some sample text here",
        "pubDate":"2008-10-27 11:06 EST",
        "author":"example author",
    },
    {
        "title":"Second",
        "link":"http://www.example.com/Seond",
        "descrition":"Some sample text here",
        "pubDate":"2008-10-25 23:20 EST",
        "author":"author mcauthor",
    },
    {
        "title":"third article",
        "link":"http://www.example.com/third-article",
        "descrition":"Some sample text here",
        "pubDate":"2008-10-25 23:18 EST",
        "author":"some other author",
    }
]
} 
Это было полезно?

Решение

Я считаю, что это уже сделано.

Взгляните на это расширение jQuery: jFeed — анализатор RSS/ATOM-каналов.

jQuery.getFeed(options);

Параметры:

  • URL:
  • данные:
  • успех:

Пример:

jQuery.getFeed({
       url: 'rss.xml',
       success: function(feed) {
           alert(feed.title);
       }
   });

Обратите внимание, что в этом случае «канал» будет объектом JavaScript.Если вы хотите передать это с помощью JSON, вы можете просто использовать Javascript-утилита JSON.

Пример:

var myJSONText = JSON.stringify(feed);

Другие советы

Нет, RSS - это формат на основе XML, а JSON - это другой язык, а не какой-то диалект. Читатели RSS не поймут JSON.

Ваш вопрос похож на вопрос «Могу ли я говорить по-французски по-китайски?»

  

Является ли спецификация RSS (без XML-части) полезной для соответствия спецификации в этом случае?

Если вы хотите изобрести еще один формат синдикации, я рекомендую использовать Atom в качестве основы. ИМХО, он намного чище, более согласован и имеет полезные функции, такие как надежные обновления прошлых элементов, делает различие между резюме и полным содержанием и т. Д.

  

Мне было интересно, если это уже было сделано.

Flickr имеет формат вывода JSON . У них даже есть фид lolcode .

Json.NET - http://james.newtonking.com/projects/json -net.aspx - имеет поддержку для преобразования любого XML-документа в JSON.

XmlDocument doc = new XmlDocument();

doc.LoadXml(@"<?xml version=""1.0"" standalone=""no""?>
<root>
  <person id=""1"">
    <name>Alan</name>
    <url>http://www.google.com</url>
  </person>
  <person id=""2"">
    <name>Louis</name>
    <url>http://www.yahoo.com</url>
  </person>
</root>");


string jsonText = JavaScriptConvert.SerializeXmlNode(doc);
//{
//  "?xml": {
//    "@version": "1.0",
//    "@standalone": "no"
//  },
//  "root": {
//    "person": [
//      {
//        "@id": "1",
//        "name": "Alan",
//        "url": "http://www.google.com"
//      },
//      {
//        "@id": "2",
//        "name": "Louis",
//        "url": "http://www.yahoo.com"
//      }
//    ]
//  }
//}

XmlDocument newDoc = (XmlDocument)JavaScriptConvert.DeerializeXmlNode(jsonText);

Assert.AreEqual(doc.InnerXml, newDoc.InnerXml);

Вы правы, что клиент читает фид должен иметь пользовательскую поддержку независимо от особенностей вашего JSON. Таким образом, вам нужно либо создать специальную программу чтения каналов, чтобы использовать эту информацию, либо кто-то должен будет предложить стандарт каналов JSON, и он должен быть широко принят.

Ну, я думаю, что твои желания наконец были выполнены, друг!

Посмотрите канал JSON . На момент написания статьи ему всего около недели, но он уже набирает обороты, и теперь его поддерживает Feedly. , Feedbin , Проводник новостей , NewsBlur и многое другое добавляется все время.

Если бы мне пришлось выбирать стандарт для использования при создании версии RSS в формате JSON, я бы наверняка выбрал JSON Feed.

Существует множество способов сериализации RSS в JSON. Все они работают примерно одинаково: элементы и атрибуты становятся именами свойств, значения становятся значениями свойств и т. Д. См. например, метод Пиюша Шаха , который является реализацией .NET.

Преобразование произвольного XML в JSON с использованием XSLT достаточно просто, и вы можете найти полдюжины его примеров в Google.

Пока это делается последовательно, JavaScript, который может обрабатывать объектную модель, предназначенную для репликации структуры данных спецификации RSS, должен иметь возможность обрабатывать объектную модель, в которую десериализуется JSON.

Кому вы планируете отправить этот JSON? Это настоящий вопрос.

Что ж, если вы разрабатываете какое-либо приложение на JavaScript, возможно, вам захочется получить любые RSS-каналы в формате JSON, чтобы решить проблему междоменных запросов.Существует надежное решение Google, которое конвертирует любой RSS в JSON.Для любителей jQuery есть универсальный плагин конвертера RSS в JSON.

Пример:

$.jGFeed('http://twitter.com/statuses/user_timeline/26767000.rss',
  function(feeds){

    // feeds is a javascript object with RSS content

  }, 10);

Я знаю, что это довольно старый вопрос и, возможно, сейчас неактуален.

Однако.Я бы посоветовал всем, кто хочет опубликовать RSS-канал в формате JSON, использовать новый формат, который быстро набирает популярность;JSONFeed (https://jsonfeed.org).

  

Существуют ли программы, которые могут объединять / понимать этот формат.

Вы можете использовать XSLT 3.0 для преобразования XML в JSON и обратно в XML снова. Подробнее о том, как выполнить преобразование в JSON здесь:

https: //www.xml.com/articles/2017/02/14/why-you-should-be-using-xslt-30/ .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top