Skip to content

Latest commit

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

go-xml-patch

A golang implementation of RFC 5261: "An Extensible Markup Language (XML) Patch Operations Framework Utilizing XML Path Language (XPath) Selectors".

Status

This library is still in early stage. API may break. Missing functionality (see progress). Probably buggy 🐛.

Usage

Install

go get github.com/jfrog/go-xml-patch

Code

package main
import (
"fmt""github.com/jfrog/go-xml-patch""os"
)
funcmain() {
target, _:=os.ReadFile("target.xml")
diff, _:=os.ReadFile("diff.xml")
patch, err:=xmlpatch.Patch(target, diff)
iferr!=nil {
panic(err)
}
fmt.Println(patch)
}

An example target XML document:

<?xml version="1.0" encoding="UTF-8"?>
<doc>
<fooa="1">This is a sample document</foo>
</doc>

An XML diff document:

<?xml version="1.0" encoding="UTF-8"?>
<diff>
<replacesel="doc/foo[@a='1']">
<bara="2"/>
</replace>
</diff>

A result XML document:

<?xml version="1.0" encoding="UTF-8"?>
<doc>
<bara="2"/>
</doc>

Progress

  • 4.3. <add> Element
    • 4.3.1. Adding an Element
    • 4.3.2. Adding an Attribute
    • 4.3.3. Adding a Prefixed Namespace Declaration
    • 4.3.4. Adding Node(s) with the 'pos' Attribute
    • 4.3.5. Adding Multiple Nodes
  • 4.4. <replace> Element (with optional auto-create, see #2)
    • 4.4.1. Replacing an Element
    • 4.4.2. Replacing an Attribute Value
    • 4.4.3. Replacing a Namespace Declaration URI
    • 4.4.4. Replacing a Comment Node
    • 4.4.5. Replacing a Processing Instruction Node
    • 4.4.6. Replacing a Text Node
  • 4.5. <remove> Element
    • 4.5.1. Removing an Element
    • 4.5.2. Removing an Attribute
    • 4.5.3. Removing a Prefixed Namespace Declaration
    • 4.5.4. Removing a Comment Node
    • 4.5.5. Removing a Processing Instruction Node
    • 4.5.6. Removing a Text Node

Other

  • CI
  • Release flow
  • better docs
  • coverage

Release

(manual for now)

Follow Go module publishing instructions and then create a new Github release.

About

golang library to patch merge xml files

Topics

Resources

Security policy

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages