Skip to content

Latest commit

 

History

History
59 lines (45 loc) · 1.11 KB

Readme.md

File metadata and controls

59 lines (45 loc) · 1.11 KB

Go Reference

cxpath - a programmer's friendly interface to XPath

Experimental, not ready for production use

With cxpath you can access XML files via XPath 2.0 in a Go friendly matter.

<a:root xmlns:a="anamespace">
  <a:sub>text</a:sub>
</a:root>
package main

import (
	"fmt"
	"log"

	"github.com/speedata/cxpath"
)

func dothings() error {
	ctx, err := cxpath.NewFromFile("myfile.xml")
	if err != nil {
		return err
	}
	// for XPath queries
	ctx.SetNamespace("a", "anamespace")
	root := ctx.Root()
	// prints 'root'
	fmt.Println(root.Eval("local-name()"))
	// prints sub
	fmt.Println(root.Eval("local-name(a:sub)"))
	// prints anamespace
	fmt.Println(root.Eval("namespace-uri(a:sub)"))
	sub := root.Eval("a:sub")
	for cp := range sub.Each("string-to-codepoints(.)") {
		// prints 116, 101, 120, 116 - the codepoints for 'text'
		fmt.Println(cp)
	}
	return nil
}

func main() {
	if err := dothings(); err != nil {
		log.Fatal(err)
	}
}

Installation

go get github.com/speedata/cxpath