Mám štruktúru HTML, ktorá vyzerá takto:
<h1>Title</h1>
<h2>Subtitle</h2>
<p>Some text</p>
<p>Some other text</p>
<h1>Some other title</h1>
<h2>Another sub-title</h2>
<p>Some other text</p>
V podstate ide o články, ale každý článok jenie vnútri jediného div. To, čo ich oddeľuje, je značka. Mám záujem analyzovať iba odseky, v ktorých by mal byť každý článok samostatným subjektom.
O čom som premýšľal: dostať nádobu, v ktorej sú uložené články, nájsť prvú značku h1. Začnite analyzovať všetky prvky, až kým nedosiahneme ďalšiu značku h1. Keď sa dosiahne nová značka h1, spracujte predtým analyzované údaje a začnite znova.
Zaujímalo by ma však, či je možné jednoduchšie riešenie?
odpovede:
1 pre odpoveď č. 1Vaše riešenie môžem vylepšiť len nepatrne:
- Vybrať všetko
h1
prvky v kontajneri (namiesto jednoduchého prehľadávania prvkov kontajnera jeden po druhom) - Pre každú zhodu
h1
- Zhromaždite svojich nasledujúcich súrodencov až do prvej
h1
- Spracujte ich
- Zhromaždite svojich nasledujúcich súrodencov až do prvej
select
umožňuje nájsť h1
s (napr. .select("selector-for-container > h1")
, potom nextElementSibling
umožňuje ľahko prechádzať z každého dopredu h1
(alebo nextSibling
, ale potom musíte tieto prvky vyradiť sami - samozrejme, ak existuje obsah článku ISN "t v p
, pre textové uzly by ste to chceli).