mirror of
https://github.com/fumiama/go-docx.git
synced 2026-06-05 07:40:24 +08:00
43 lines
743 B
Go
43 lines
743 B
Go
package docxlib
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"io"
|
|
"strings"
|
|
)
|
|
|
|
// Hyperlink element contains links
|
|
type Hyperlink struct {
|
|
XMLName xml.Name `xml:"w:hyperlink,omitempty"`
|
|
ID string `xml:"r:id,attr"`
|
|
Run Run
|
|
}
|
|
|
|
// UnmarshalXML ...
|
|
func (r *Hyperlink) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
|
|
for {
|
|
t, err := d.Token()
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if tt, ok := t.(xml.StartElement); ok {
|
|
if tt.Name.Local == "r" {
|
|
err = d.DecodeElement(&r.Run, &tt)
|
|
if err != nil && !strings.HasPrefix(err.Error(), "expected") {
|
|
return err
|
|
}
|
|
continue
|
|
}
|
|
err = d.Skip() // skip unsupported tags
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|