mirror of
https://github.com/Theodor-Springmann-Stiftung/lenz-web.git
synced 2025-12-18 07:15:33 +00:00
Parsing upon deserialising
This commit is contained in:
@@ -3,15 +3,44 @@ package xmlmodels
|
||||
import (
|
||||
"encoding/json"
|
||||
"encoding/xml"
|
||||
|
||||
"github.com/Theodor-Springmann-Stiftung/lenz-web/xmlparsing"
|
||||
)
|
||||
|
||||
type Letter struct {
|
||||
XMLName xml.Name `xml:"letterText"`
|
||||
Letter int `xml:"letter,attr"`
|
||||
Pages []Page `xml:"page"`
|
||||
Hands []RefElement `xml:"hand"`
|
||||
Content string `xml:",innerxml"`
|
||||
Chardata string `xml:",chardata"`
|
||||
XMLName xml.Name `xml:"letterText"`
|
||||
Letter int `xml:"letter,attr"`
|
||||
Pages []Page `xml:"page"`
|
||||
Hands []RefElement `xml:"hand"`
|
||||
HTML xmlparsing.Parsed[LenzTextHandler, *LenzParseState] `xml:"-"`
|
||||
}
|
||||
|
||||
func (l *Letter) UnmarshalXML(dec *xml.Decoder, start xml.StartElement) error {
|
||||
type alias struct {
|
||||
XMLName xml.Name `xml:"letterText"`
|
||||
Letter int `xml:"letter,attr"`
|
||||
Pages []Page `xml:"page"`
|
||||
Hands []RefElement `xml:"hand"`
|
||||
Inner string `xml:",innerxml"`
|
||||
}
|
||||
|
||||
var data alias
|
||||
if err := dec.DecodeElement(&data, &start); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
l.XMLName = data.XMLName
|
||||
l.Letter = data.Letter
|
||||
l.Pages = data.Pages
|
||||
l.Hands = data.Hands
|
||||
|
||||
parsed, err := parseText(Get(), data.Inner)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
l.HTML = parsed
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (l Letter) Keys() []any {
|
||||
|
||||
Reference in New Issue
Block a user