mirror of
https://github.com/Theodor-Springmann-Stiftung/kgpz_web.git
synced 2025-10-28 16:45:32 +00:00
49 lines
1.0 KiB
Go
49 lines
1.0 KiB
Go
package xmlprovider
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"fmt"
|
|
)
|
|
|
|
type AgentProvider struct {
|
|
XMLProvider[Agents]
|
|
}
|
|
|
|
type Agent struct {
|
|
XMLName xml.Name `xml:"akteur"`
|
|
Names []string `xml:"name"`
|
|
SortName string `xml:"sortiername"`
|
|
Life string `xml:"lebensdaten"`
|
|
GND string `xml:"gnd"`
|
|
Org bool `xml:"org,attr"`
|
|
Identifier
|
|
AnnotationNote
|
|
}
|
|
|
|
type Agents struct {
|
|
XMLName xml.Name `xml:"akteure"`
|
|
Agents []Agent `xml:"akteur"`
|
|
}
|
|
|
|
func (a Agents) String() string {
|
|
var res []string
|
|
for _, agent := range a.Agents {
|
|
res = append(res, agent.String())
|
|
}
|
|
|
|
return fmt.Sprintf("Agents: %v", res)
|
|
}
|
|
|
|
func (a Agents) Append(data Agents) Agents {
|
|
a.Agents = append(a.Agents, data.Agents...)
|
|
return a
|
|
}
|
|
|
|
func (a *Agent) String() string {
|
|
return fmt.Sprintf("ID: %s\nNames: %v\nSortName: %s\nLife: %s\nGND: %s\nAnnotations: %v\nNotes: %v\n", a.ID, a.Names, a.SortName, a.Life, a.GND, a.Annotations, a.Notes)
|
|
}
|
|
|
|
func NewAgentProvider(paths []string) *AgentProvider {
|
|
return &AgentProvider{XMLProvider: XMLProvider[Agents]{paths: paths}}
|
|
}
|