feat(命名空间): 规范声明顺序,修复命名空间
build.yaml / build (push) Successful in 49s

This commit is contained in:
xiaoqidun committed 2026-10-12 11:20:30 +08:00
1 parent 17a9a03361
commit c4b81155a9
19 files changed
+410 -142

No files matched your search

+57 -1
View File
@@ -14,7 +14,10 @@
package ofdgo
import "encoding/xml"
import (
"encoding/xml"
"fmt"
)
// PageContent 页面内容
type PageContent struct {
@@ -270,3 +273,56 @@ type ImageBorder struct {
DashPattern string `xml:"DashPattern,attr"`
BorderColor *StrokeColor `xml:"BorderColor"`
}
// UnmarshalXML 读取页面直接子节点,扩展内容不作为页面区域、资源或图层使用
// 入参: d XML解码器, start 起始节点
// 返回: error 解析错误
func (page *PageContent) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
if start.Name.Local != "Page" {
return fmt.Errorf("expected Page root, got %s", start.Name.Local)
}
*page = PageContent{XMLName: start.Name}
return decodeOFDChildren(d, start, func(d *xml.Decoder, node xml.StartElement) error {
switch node.Name.Local {
case "Area":
return d.DecodeElement(&page.Area, &node)
case "Template":
var template Template
if err := d.DecodeElement(&template, &node); err != nil {
return err
}
page.Template = append(page.Template, template)
case "PageRes":
var location string
if err := d.DecodeElement(&location, &node); err != nil {
return err
}
page.PageRes = append(page.PageRes, location)
case "Content":
return d.DecodeElement(&page.Content, &node)
case "Actions":
return decodeOFDActions(d, node, &page.Actions)
default:
return d.Skip()
}
return nil
})
}
// UnmarshalXML 读取页面图层,不将外部命名空间中的Layer作为图层
// 入参: d XML解码器, start 起始节点
// 返回: error 解析错误
func (content *Content) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
*content = Content{}
return decodeOFDChildren(d, start, func(d *xml.Decoder, node xml.StartElement) error {
if node.Name.Local != "Layer" {
return d.Skip()
}
var layer Layer
if err := d.DecodeElement(&layer, &node); err != nil {
return err
}
content.Layer = append(content.Layer, layer)
return nil
})
}