This commit is contained in:
idk
2022-12-07 03:47:51 +00:00
parent 699b3e2ec2
commit 1fd140742f
3 changed files with 64 additions and 4 deletions

10
.gitignore vendored
View File

@ -1,4 +1,6 @@
newsgo
onionkeys
i2pkeys
build
/newsgo
/onionkeys
/i2pkeys
/tlskeys
/build
/data

View File

@ -1 +1,14 @@
package newsbuilder
import (
newsfeed "i2pgit.org/idk/newsgo/builder/feed"
)
type NewsBuilder struct {
Nodes []newsfeed.Node
File string
}
func (n *NewsBuilder) LoadFeed() {
n.Nodes = newsfeed.XMLData(n.File)
}

45
builder/feed/feed.go Normal file
View File

@ -0,0 +1,45 @@
package newsfeed
import (
"bytes"
"encoding/xml"
)
type Node struct {
XMLName xml.Name
Attrs []xml.Attr `xml:",any,attr"`
Content []byte `xml:",innerxml"`
Nodes []Node `xml:",any"`
}
func (n *Node) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
n.Attrs = start.Attr
type node Node
return d.DecodeElement((*node)(n), &start)
}
func XMLData(data []byte) (m []Node) {
buf := bytes.NewBuffer(data)
dec := xml.NewDecoder(buf)
var n Node
err := dec.Decode(&n)
if err != nil {
panic(err)
}
walk([]Node{n}, func(n Node) bool {
m = append(m, n)
return true
})
return m
}
func walk(nodes []Node, f func(Node) bool) {
for _, n := range nodes {
if f(n) {
walk(n.Nodes, f)
}
}
}