Skip to content

Latest commit

 

History

History
74 lines (64 loc) · 1.6 KB

README.md

File metadata and controls

74 lines (64 loc) · 1.6 KB

Simple RSS parser and generator for Go

Usage example:

package main

import (
    "fmt"
    "github.com/KonishchevDmitry/go-rss"
)

var rssData = `
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>Feed title</title>
        <link>http://example.com/</link>
        <description>Feed description</description>
        <item>
            <title>Item 1</title>
            <link>http://example.com/item1</link>
            <description>Item 1 description</description>
        </item>
    </channel>
</rss>
`

func main() {
    url := "http://example.com/feed.rss"

    // Get an RSS feed from URL
    feed, err := rss.Get(url)
    if err != nil {
        fmt.Printf("Failed to get %s: %s\n", url, err)
    }

    // Get an RSS feed from string
    feed, err = rss.Parse([]byte(rssData))
    if err != nil {
        fmt.Println("Parsing error:", err)
        return
    }

    // Change <generator> element value
    feed.Generator = "go-rss"

    // Generate the modified RSS feed
    data, err := rss.Generate(feed)
    if err != nil {
        fmt.Println("RSS generation error:", err)
        return
    }

    fmt.Printf("%s\n", data)
}

Output:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>Feed title</title>
        <link>http://example.com/</link>
        <description>Feed description</description>
        <generator>go-rss</generator>
        <item>
            <title>Item 1</title>
            <link>http://example.com/item1</link>
            <description>Item 1 description</description>
        </item>
    </channel>
</rss>