Elixir:
HTML:n jäsennys

Kuinka:

Elixir, sen vankkumattoman rinnakkaisuuden mallin ja funktionaalisen ohjelmointiparadigman kanssa, ei sisällä sisäänrakennettuja HTML-jäsentämisen valmiuksia. Voit kuitenkin käyttää suosittuja kolmannen osapuolen kirjastoja kuten Floki tähän tarkoitukseen. Floki tekee HTML-jäsentämisestä intuitiivista ja tehokasta, hyödyntäen Elixiriä mallin sopivuudesta ja putkituksesta.

Lisää ensin Floki mix.exs riippuvuuksiisi:

defp deps do
  [
    {:floki, "~> 0.31.0"}
  ]
end

Suorita sitten mix deps.get asentaaksesi uuden riippuvuuden.

Nyt jäsentäkäämme yksinkertainen HTML-merkkijono datan poimimiseksi. Etsitään otsikoita <h1>-tageista:

html_content = """
<html>
  <body>
    <h1>Hello, Elixir!</h1>
    <h1>Toinen Otsikko</h1>
  </body>
</html>
"""

titles = html_content
         |> Floki.find("h1")
         |> Floki.text()

IO.inspect(titles)

Esimerkkituloste:

["Hello, Elixir!", "Toinen Otsikko"]

Sukeltaaksemme syvemmälle, sanotaan että haluat poimia linkit (<a>-tagit) niiden href-attribuuttien kanssa. Tässä kuinka voit saavuttaa sen:

html_content = """
<html>
  <body>
    <a href="https://elixir-lang.org/">Elixiriä Virallisesti</a>
    <a href="https://hexdocs.pm/">HexDocs</a>
  </body>
</html>
"""

links = html_content
        |> Floki.find("a")
        |> Enum.map(fn({_, attrs, [text]}) -> {text, List.keyfind(attrs, "href", 0)} end)
        
IO.inspect(links)

Esimerkkituloste:

[{"Elixiriä Virallisesti", {"href", "https://elixir-lang.org/"}}, {"HexDocs", {"href", "https://hexdocs.pm/"}}]

Tämä lähestyminen mahdollistaa HTML-dokumenttien tehokkaan navigoinnin ja jäsentämisen, helpottaen verkkodatan poiminta- ja manipulointitehtäviä Elixir-sovelluksissa.