36 lines
587 B
Go
36 lines
587 B
Go
|
package dom
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"fmt"
|
||
|
)
|
||
|
|
||
|
type Document struct {
|
||
|
root *Element
|
||
|
PrettyPrint bool
|
||
|
Indentation string
|
||
|
DocType bool
|
||
|
}
|
||
|
|
||
|
func CreateDocument() *Document {
|
||
|
return &Document{ PrettyPrint: false, Indentation: " ", DocType: true }
|
||
|
}
|
||
|
|
||
|
func (doc *Document) SetRoot(node *Element) {
|
||
|
node.parent = nil
|
||
|
doc.root = node
|
||
|
}
|
||
|
|
||
|
func (doc *Document) String() string {
|
||
|
var b bytes.Buffer
|
||
|
if doc.DocType {
|
||
|
fmt.Fprintln(&b, `<?xml version="1.0" encoding="utf-8" ?>`)
|
||
|
}
|
||
|
|
||
|
if doc.root != nil {
|
||
|
doc.root.Bytes(&b, doc.PrettyPrint, doc.Indentation, 0)
|
||
|
}
|
||
|
|
||
|
return string(b.Bytes())
|
||
|
}
|