/exogiri

Nokogiri. But like, for Elixir.

Primary LanguageC

Exogiri

Nokogiri. But like, for Elixir.

NOTE: All objects are mutable, and thus process local. If you try to pass XML nodes or XML documents between processes they will be inaccessible.

DOUBLE NOTE: C is not my first language. I've probably got memory leaks and just plain logic errors hanging about all over. Contributions and criticism welcome.

Features

  • XML Documents
    • Read document from string
    • Read document from path
    • Create new documents
    • Attribute support
      • Get/set for attributes by namespace
      • Get/set without namespace
    • Element support
      • Create new elements
      • Remove elements
      • Move elements
      • Copy elements
      • XML fragment support
      • Set element content
      • Append element content
  • XML Schemas
    • Load schemas from string (with path awareness for includes)
    • Load schemas from path
    • In-memory document validation
    • Streaming document validation (not fully supported by libxml2 - may not ever be completed)
  • XSL Transforms
    • Simple File transforms and parameters
    • Included/multi-file transform support
  • XPath Support
    • Return element lists
    • Return non-element result sets
    • Namespaced queries
    • Namespaceless queries

Installation

Using Hex, the package can be installed by adding exogiri to your list of dependencies in mix.exs:

def deps do
  [
    {:exogiri, "~> 0.3.0"}
  ]
end

The docs for the most recent version can be found at Hex Docs.