mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
parent
9e0ae94e72
commit
66caa38d49
2 changed files with 52 additions and 2 deletions
|
|
@ -55,6 +55,13 @@ type StartElement struct {
|
|||
Attr []Attr
|
||||
}
|
||||
|
||||
func (e StartElement) Copy() StartElement {
|
||||
attrs := make([]Attr, len(e.Attr))
|
||||
copy(e.Attr, attrs)
|
||||
e.Attr = attrs
|
||||
return e
|
||||
}
|
||||
|
||||
// An EndElement represents an XML end element.
|
||||
type EndElement struct {
|
||||
Name Name
|
||||
|
|
@ -100,6 +107,23 @@ type readByter interface {
|
|||
ReadByte() (b byte, err os.Error)
|
||||
}
|
||||
|
||||
// CopyToken returns a copy of a Token.
|
||||
func CopyToken(t Token) Token {
|
||||
switch v := t.(type) {
|
||||
case CharData:
|
||||
return v.Copy()
|
||||
case Comment:
|
||||
return v.Copy()
|
||||
case Directive:
|
||||
return v.Copy()
|
||||
case ProcInst:
|
||||
return v.Copy()
|
||||
case StartElement:
|
||||
return v.Copy()
|
||||
}
|
||||
return t
|
||||
}
|
||||
|
||||
// A Parser represents an XML parser reading a particular input stream.
|
||||
// The parser assumes that its input is encoded in UTF-8.
|
||||
type Parser struct {
|
||||
|
|
@ -180,8 +204,8 @@ func NewParser(r io.Reader) *Parser {
|
|||
//
|
||||
// Slices of bytes in the returned token data refer to the
|
||||
// parser's internal buffer and remain valid only until the next
|
||||
// call to Token. To acquire a copy of the bytes, call the token's
|
||||
// Copy method.
|
||||
// call to Token. To acquire a copy of the bytes, call CopyToken
|
||||
// or the token's Copy method.
|
||||
//
|
||||
// Token expands self-closing elements such as <br/>
|
||||
// into separate start and end elements returned by successive calls.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue