mozilla

Porównywanie wersji

API dostępu do danych z kanałów

Change Revisions

Wersja 261536:

Sprawdzenie wersji 261536 wykonane przez Bedi

Wersja 229837:

Sprawdzenie wersji 229837 wykonane przez Bedi

Tytuł:
API dostępu do danych z kanałów
API dostępu do danych z kanałów
Ciąg znaków:
API_dostępu_do_danych_z_kanałów
API_dostępu_do_danych_z_kanałów
Etykiety:
Wszystkie_kategorie, Rozszerzenia, Dodatki
Treść:

Revision 261536
Revision 229837
t7    <p>t
8      <a href="pl/Firefox_2">Firefox 2</a> oraz Thunderbird 2 wpr
>owadzają serię interfejsów, które pozwalają programistom rozszerz 
>eń w łatwy sposób uzyskiwać dostęp do kanałów RSS i Atom. 
9    </p>
10    <h2 id="Interfejsy_kana.C5.82.C3.B3w" name="Interfejsy_kana.C
>5.82.C3.B3w"> 
11      Interfejsy kanałów
12    </h2>
13    <dl>
14      <dt>
15        <code><a href="pl/NsIFeed">nsIFeed</a></code>
16      </dt>
17      <dd>
18        Reprezentuje kanał RSS lub Atom.
19      </dd>
20      <dt>
21        <code><a href="pl/NsIFeedContainer">nsIFeedContainer</a><
>/code> 
22      </dt>
23      <dd>
24        Bazowa klasa, z której dziedziczy kilka interfejsów związ
>anych z kanałami. 
25      </dd>
26      <dt>
27        <code><a href="pl/NsIFeedElementBase">nsIFeedElementBase<
>/a></code> 
28      </dt>
29      <dd>
30        Bazowa klasa, z której dziedziczy kilka interfejsów związ
>anych z kanałami. 
31      </dd>
32      <dt>
33        <code><a href="pl/NsIFeedEntry">nsIFeedEntry</a></code>
34      </dt>
35      <dd>
36        Reprezentuje pojedynczy wpis kanału RSS lub Atom.
37      </dd>
38      <dt>
39        <code><a href="pl/NsIFeedGenerator">nsIFeedGenerator</a><
>/code> 
40      </dt>
41      <dd>
42        Opisuje software, za pomocą którego wygenerowano kanał RS
>S lub Atom. 
43      </dd>
44      <dt>
45        <code><a href="pl/NsIFeedPerson">nsIFeedPerson</a></code>
46      </dt>
47      <dd>
48        Reprezentuje osobę. Zawiera imię oraz nazwisko osoby, jej
> adres email oraz adres jej strony domowej. 
49      </dd>
50      <dt>
51        <code><a href="pl/NsIFeedProcessor">nsIFeedProcessor</a><
>/code> 
52      </dt>
53      <dd>
54        Parsuje kanały RSS oraz Atom.
55      </dd>
56      <dt>
57        <code><a href="pl/NsIFeedProgressListener">nsIFeedProgres
>sListener</a></code> 
58      </dt>
59      <dd>
60        Zaimplementowane przez program chcący parsować kanały RSS
> lub Atom w celu otrzymywania wiadomości podczas procesu parsowan 
>ia. 
61      </dd>
62      <dt>
63        <code><a href="pl/NsIFeedResult">nsIFeedResult</a></code>
64      </dt>
65      <dd>
66        Opisuje rezultat parsowania kanału.
67      </dd>
68      <dt>
69        <code><a href="pl/NsIFeedResultListener">nsIFeedResultLis
>tener</a></code> 
70      </dt>
71      <dd>
72        Zaimplementowane przez program chcący parsować kanały RSS
> lub Atom w celu otrzymywania potwierdzenia ukończenia procesu pr 
>asowania. 
73      </dd>
74      <dt>
75        <code><a href="pl/NsIFeedTextConstruct">nsIFeedTextConstr
>uct</a></code> 
76      </dt>
77      <dd>
78        Reprezentuje tekst w wątku; zawiera funkcje pozwalające n
>a pobranie danego tekstu wyłącznie jako tekst lub HTML. 
79      </dd>
80      <dt>
81        <code><a href="pl/NsIScriptableUnescapeHTML">nsIScriptabl
>eUnescapeHTML</a></code> 
82      </dt>
83      <dd>
84        Klasa użytkowa przywracająca ciągi znaków HTML.
85      </dd>
86    </dl>
87    <h2 id="Przyk.C5.82ad:_Czytanie_kana.C5.82u_z_sieci" name="Pr
>zyk.C5.82ad:_Czytanie_kana.C5.82u_z_sieci"> 
88      Przykład: Czytanie kanału z sieci
89    </h2>
90    <p>
91      Bardzo łatwo można odczytać oraz parsować kanał. Użyj <code
>><a href="pl/XMLHttpRequest">XMLHttpRequest</a></code> by pobrać  
>kanał, potem przekaż jego łańcuch do <code><a href="pl/NsIFeedPro 
>cessor">nsIFeedProcessor</a></code> w celu przetworzenia. 
92    </p>
93    <p>
94      Pobieranie kanału oraz wysyłanie go do parsowania może zost
>ać zrobione za pomocą kodu podobnego do przedstawionego poniżej: 
95    </p>
96    <pre>
97  fetch: function(feedUrl)
98  {
99    var httpRequest = null;
100    
101    function infoReceived() {
102      var data = httpRequest.responseText;
103      
104      var ioService = Components.classes['@mozilla.org/network/io
>-service;1'] 
105                                         .getService(Components.i
>nterfaces.nsIIOService); 
106      var uri = ioService.newURI(feedUrl, null, null);
107      
108      if (data.length) {
109        var parser = Components.classes["@mozilla.org/feed-proces
>sor;1"] 
110                                        .createInstance(Component
>s.interfaces.nsIFeedProcessor); 
111        var listener = new FeedTestResultListener();
112        try {
113          parser.listener = listener;
114          parser.parseFromString(data, uri);
115        }
116        catch(e) {
117          alert("Error parsing feed.");
118        }
119      }
120    }
121    
122    httpRequest = new XMLHttpRequest();
123    
124    httpRequest.open("GET", feedUrl, true);
125    try {
126      httpRequest.onload = infoReceived;
127      httpRequest.send(null);
128    }
129    catch(e) {
130      alert(e);
131    }
132  }
133</pre>
134    <p>
135      Interfejs <code><a href="pl/NsIFeedProcessor">nsIFeedProces
>sor</a></code> pozwala na parsowanie danych kanału z kilku możliw 
>ych źródeł; w tym przypadku ładujemy dokument do łańcucha, a nast 
>ępnie parsujemy go za pomocą metody <code>parseFromString()</code 
>>. Można też parsować go z pliku za pomocą <code>parseFromStream( 
>)</code>, lub też bezpośrednio z adresu za pomocą <code>parseAsyn 
>c()</code>. 
136    </p>
137    <p>
138      Właściwe parsowanie kanału dokonywane jest za pomocą metody
> nazywanej <code>handleResult()</code> na obiekcie <code>FeedTest 
>ResultListener</code>. Kod wygląda następująco: 
139    </p>
140    <pre>
141    FeedTestResultListener.prototype = {
142      handleResult: function(result) {
143        var feed = result.doc;
144        
145        feed.QueryInterface(Components.interfaces.nsIFeed);
146    
147        // Otwórz nowe okno
148    
149        var win = window.open("", "FeedTest_Window");
150        var doc = win.document;
151    
152        doc.open();
153        
154        // Zapisz nagłówek HTML oraz tytuł strony
155        
156        doc.write("&lt;html&gt;&lt;head&gt;&lt;title&gt;Feed: " +
> feed.title.text + "&lt;/title&gt;&lt;/head&gt;&lt;body&gt;"); 
157        doc.write("&lt;h1&gt;" + feed.title.text + "&lt;/h1&gt;&l
>t;p&gt;"); 
158          
159        var itemArray = feed.items;
160        var numItems = itemArray.length;
161        
162        // Zapisz informacje zawartą w artykule
163        
164        if (!numItems) {
165          doc.write("&lt;i&gt;No news is good news!&lt;/i&gt;");
166        }
167        else {
168          var i;
169          var theEntry;
170          var theUrl;
171          var info;
172          
173          for (i=0; i&lt;numItems; i++) {
174            theEntry = itemArray.queryElementAt(i, Components.int
>erfaces.nsIFeedEntry); 
175            
176            if (theEntry) {
177              theUrl = 
178              doc.write('&lt;b&gt;&lt;a href="' + theEntry.link.r
>esolve("") + '"&gt;' + theEntry.title.text + '&lt;/a&gt;&lt;/b&gt 
>;&lt;br&gt;'); 
179              if (theEntry.summary) {
180                info = theEntry.summary.text + "&lt;p&gt;&lt;hr&g
>t;&lt;p&gt;"; 
181              }
182              else {
183                info = theEntry.content.text + "&lt;p&gt;&lt;hr&g
>t;&lt;p&gt;"; 
184              }
185              doc.write("&lt;blockquote&gt;" + info);
186              doc.write("&lt;/blockquote&gt;&lt;p&gt;");
187            }
188          }
189        }
190        
191        // Zamknij dokument
192        
193        doc.write("&lt;/body&gt;&lt;/html&gt;");
194        doc.close();
195      }
196    }
197</pre>
198    <p>
199      Funkcja <code>handleResult()</code> otrzymuje jako argument
>y obiekt typu <code><a href="pl/NsIFeedResult">nsIFeedResult</a>< 
>/code> opisujący kanał, oraz <code>doc</code> typu <code><a href= 
>"pl/NsIFeed">nsIFeed</a></code> zawierające wszystkie dane kanału 
>. 
200    </p>
201    <p>
202      W celu uzyskania tytułu kanału należy spojrzeć na właściwoś
>ć <code>feed.title</code>. Tytuł jest <code><a href="pl/NsIFeedTe 
>xtConstruct">nsIFeedTextConstruct</a></code> reprezentujący tekst 
> zapisany w rożnych formatach; używając właściwości <code>text</c 
>ode> uzyskamy tytuł kanału w formacie HTML. Można również użyć me 
>tody <code>plainText()</code> by uzyskać kopię jako zwykły tekst. 
203    </p>
204    <p>
205      Następnie można przejrzeć uszeregowanie kanału za pomocą <c
>ode>feed.items</code> <code><a href="pl/NsIArray">nsIArray</a></c 
>ode>. Uszeregowanie to zawiera obiekty <code><a href="pl/NsIFeedE 
>ntry">nsIFeedEntry</a></code> opisujące każdy składnik kanału. 
206    </p>
207    <p>
208      Tworzenie zawartości dokumentu następuje poprzez pobranie t
>ytułu, linka, podsumowania oraz zawartości własności poszczególny 
>ch składników. Pełny adres linka może zostać pobrany za pomocą me 
>tody linka <code>resolve()</code>. 
209    </p>
210    <p>
211      W celu rozpoczęcia pobierania kanału wywołujemy po prostu <
>code>fetch(<i>url</i>)</code>. Otwierane jest wtedy nowe okno zaw 
>ierające składniki kanału, których linki pozwalają na bezpośredni 
>e odczytanie artykułu. 
212    </p>
213    <p>
214      Szczegóły dostępu do poszczególnych interfejsów dostępowych
> kanału można znaleźć klikając w poniższe odnośniki. 
215    </p>{{ languages( { "es": "es/API_de_acceso_a_canales", "fr":
> "fr/API_d\'acc\u00e8s_au_contenu_de_flux", "ja": "ja/Feed_conten 
>t_access_API", "en": "en/Feed_content_access_API" } ) }} 

Wróć do historii