Skip to content

xmlqueryvsmxj

MIT 17 2 485
58.1 thousand (month) Nov 21 2019 v1.5.1(2026-03-21 10:54:17 ago)
633 2 2 MIT
Feb 09 2017 58.1 thousand (month) per(2023-07-24 15:10:09 ago)

xmlquery is a Go library that allows you to parse and extract data from XML documents using XPath expressions. It provides a simple and intuitive API for traversing and querying the XML tree structure, and it is built on top of the popular Goquery library.

Note: for parsing HTML sister library htmlquery should be used instead.

mxj is a Go library for working with JSON and XML data. It allows you to convert between JSON and XML, merge JSON and XML documents, and extract values from JSON and XML using a simple and intuitive API.

One of the main features of mxj is its ability to work with JSON and XML data in a struct-like manner, allowing you to access values using dot notation.

Example Use


```go package main import ( "fmt" "log" "github.com/antchfx/xmlquery" ) func main() { // Parse the XML string doc, err := xmlquery.Parse([]byte(` John Doe 30
Main St Anytown CA 12345
555-555-5555 555-555-5556
`)) if err != nil { log.Fatal(err) } // Extract the name name := xmlquery.FindOne(doc, "//person/name") fmt.Println(name.InnerText()) // "John Doe" // Extract the city city := xmlquery.FindOne(doc, "//person/address/city") fmt.Println(city.InnerText()) // "Anytown" // Extract all phone numbers phones := xmlquery.Find(doc, "//person/phone") for _, phone := range phones { fmt.Println(phone.InnerText()) } // "555-555-5555" // "555-555-5556" } ```
```go package main import ( "fmt" "github.com/clbanning/mxj" ) func main() { // Parse the JSON string jsonData := []byte(` { "name": "John Doe", "age": 30, "address": { "street": "Main St", "city": "Anytown", "state": "CA", "zip": "12345" }, "phones": [ "555-555-5555", "555-555-5556" ] } `) mv, err := mxj.NewMapJson(jsonData) if err != nil { fmt.Println("Error:", err) return } // Extract the name name, _ := mv.ValueForPath("name") fmt.Println("name:", name) // "John Doe" // Extract the city city, _ := mv.ValueForPath("address.city") fmt.Println("city:", city) // "Anytown" // Extract all phone numbers phones, _ := mv.ValuesForPath("phones") for _, phone := range phones { fmt.Println("phone:", phone) } // "555-555-5555" // "555-555-5556" } ```

Alternatives / Similar


Was this page helpful?