xpp

package
v0.0.0-...-18c7e98 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 17, 2024 License: MIT, MIT, MIT Imports: 5 Imported by: 0

README

goxpp

The goxpp library is an XML parser library that is loosely based on the Java XMLPullParser. This library allows you to easily parse arbitrary XML content using a pull parser. You can think of goxpp as a lightweight wrapper around Go's XML Decoder that provides a set of functions that make it easier to parse XML content than using the raw decoder itself.

Overview

To begin parsing a XML document using goxpp you must pass it an io.Reader object for your document:

file, err := os.Open("path/file.xml")
parser := xpp.NewXMLPullParser(file, false, charset.NewReader)

The goxpp library decodes documents into a series of token objects:

Token Name
StartDocument
EndDocument
StartTag
EndTag
Text
Comment
ProcessingInstruction
Directive
IgnorableWhitespace

You will always start at the StartDocument token and can use the following functions to walk through a document:

Function Name Description
Next() Advance to the next Text, StartTag, EndTag, EndDocument token.
Note: skips Comment, Directive and ProcessingInstruction
NextToken() Advance to the next token regardless of type.
NextText() Advance to the next Text token.
Skip() Skip the next token.
DecodeElement(v interface{}) Decode an entire element from the current tag into a struct.
Note: must be at a StartTag token

This project is licensed under the MIT License

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CharsetReader

type CharsetReader func(charset string, input io.Reader) (io.Reader, error)

type XMLEventType

type XMLEventType int
const (
	StartDocument XMLEventType = iota
	EndDocument
	StartTag
	EndTag
	Text
	Comment
	ProcessingInstruction
	Directive
	IgnorableWhitespace // TODO: ?

)

type XMLPullParser

type XMLPullParser struct {
	// Document State
	Spaces      map[string]string
	SpacesStack []map[string]string

	// Token State
	Depth int
	Event XMLEventType
	Attrs []xml.Attr
	Name  string
	Space string
	Text  string
	// contains filtered or unexported fields
}

func NewXMLPullParser

func NewXMLPullParser(r io.Reader, strict bool, cr CharsetReader) *XMLPullParser

func (*XMLPullParser) Attribute

func (p *XMLPullParser) Attribute(name string) string

func (*XMLPullParser) DecodeElement

func (p *XMLPullParser) DecodeElement(v interface{}) error

func (*XMLPullParser) EventName

func (p *XMLPullParser) EventName(e XMLEventType) (name string)

func (*XMLPullParser) EventType

func (p *XMLPullParser) EventType(t xml.Token) (event XMLEventType)

func (*XMLPullParser) Expect

func (p *XMLPullParser) Expect(event XMLEventType, name string) (err error)

func (*XMLPullParser) ExpectAll

func (p *XMLPullParser) ExpectAll(event XMLEventType, space string, name string) (err error)

func (*XMLPullParser) IsWhitespace

func (p *XMLPullParser) IsWhitespace() bool

func (*XMLPullParser) Next

func (p *XMLPullParser) Next() (event XMLEventType, err error)

func (*XMLPullParser) NextTag

func (p *XMLPullParser) NextTag() (event XMLEventType, err error)

func (*XMLPullParser) NextText

func (p *XMLPullParser) NextText() (string, error)

func (*XMLPullParser) NextToken

func (p *XMLPullParser) NextToken() (event XMLEventType, err error)

func (*XMLPullParser) Skip

func (p *XMLPullParser) Skip() error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL