diff --git a/cmd/main/main.go b/cmd/main/main.go index 1c2b27a..e929bfa 100644 --- a/cmd/main/main.go +++ b/cmd/main/main.go @@ -59,6 +59,7 @@ func main() { panic(err) } for _, para := range doc.Document.Body.Paragraphs { + fmt.Println("New paragraph") for _, child := range para.Children { if child.Run != nil { if child.Run.Text != nil { @@ -80,6 +81,7 @@ func main() { } } + fmt.Print("End of paragraph\n\n") } fmt.Println("End of main") } diff --git a/structdoc_test.go b/structdoc_test.go index 9d56bfa..9ae866d 100644 --- a/structdoc_test.go +++ b/structdoc_test.go @@ -571,6 +571,8 @@ func TestMarshalDrawingStructure(t *testing.T) { para2 := w.AddParagraph() para2.AddText("test font size and color").Size(22).Color("ff0000") + para2.AddText("test font size and color").Size(22).Color("ff0000") + para2.AddText("test font size and color").Size(22).Color("ff0000") nextPara := w.AddParagraph() nextPara.AddLink("google", `http://google.com`) diff --git a/structnodes.go b/structnodes.go index a056ca5..29a5b13 100644 --- a/structnodes.go +++ b/structnodes.go @@ -19,10 +19,26 @@ type Paragraph struct { } func (p *Paragraph) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - for _, c := range p.Children { - e.EncodeElement(c, start) + err := e.EncodeToken(start) + if err != nil { + return err } - return nil + for _, c := range p.Children { + switch { + case c.Link != nil: + err = e.Encode(c.Link) + case c.Run != nil: + err = e.Encode(c.Run) + case c.Properties != nil: + err = e.Encode(c.Properties) + default: + continue + } + if err != nil { + return err + } + } + return e.EncodeToken(start.End()) } func (p *Paragraph) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {