API for clojure.data.xml - data.xml 0.2.1-SNAPSHOT (in development)

by Chris Houser

Full namespace name: clojure.data.xml

Overview

Functions to parse XML into lazy sequences and lazy trees and
emit these as text.

Public Variables and Functions



aggregate-xmlns

function
Usage: (aggregate-xmlns xml)
Put all occurring xmlns into the root

    
    
    Source
  


alias-uri

function
Usage: (alias-uri & {:as alias-nss})
Define a Clojure namespace aliases for xmlns uris.

This sets up the current namespace for reading qnames denoted with
Clojure's ::alias/keywords reader feature.


## Example
(alias-uri :D "DAV:")
                         ; similar in effect to
;; (require '[xmlns.DAV%3A :as D])
                         ; but required namespace is auto-created
                         ; henceforth, shorthand keywords can be used
{:tag ::D/propfind}
                         ; ::D/propfind will be expanded to :xmlns.DAV%3A/propfind
                         ; in the current namespace by the reader

## Clojurescript support
Currently, namespaces can't be auto-created in Clojurescript.
Dummy files for aliased uris have to exist. Have a look at `uri-file` and `print-uri-file-command!` to create those.

    
    
    Source
  


cdata

function
Usage: (cdata content)
Create a CData node

    
    
    Source
  


element

function
Usage: (element tag)
       (element tag attrs)
       (element tag attrs & content)
Create an xml Element from content varargs

    
    
    Source
  


element*

function
Usage: (element* tag attrs content meta)
       (element* tag attrs content)
Create an xml element from a content collection and optional metadata

    
    
    Source
  


element-nss

function
Usage: (element-nss {:keys [attrs], :as element})
Get xmlns environment from element

    
    
    Source
  


emit

function
Usage: (emit e writer & {:as opts})
Prints the given Element tree as XML text to stream.
Options:
 :encoding <str>          Character encoding to use
 :doctype  <str>          Document type (DOCTYPE) declaration to use

    
    
    Source
  


emit-str

function
Usage: (emit-str e & opts)
Emits the Element to String and returns it.
Options:
 :encoding <str>          Character encoding to use
 :doctype  <str>          Document type (DOCTYPE) declaration to use

    
    
    Source
  


event-seq

function
Usage: (event-seq source {:keys [include-node? location-info coalescing supporting-external-entities allocator namespace-aware replacing-entity-references validating reporter resolver support-dtd], :or {include-node? #{:characters :element}, location-info true, coalescing true, supporting-external-entities false}})
Parses an XML input source into a lazy sequence of pull events.

Input source can be a java.io.InputStream or java.io.Reader

Options:

  :include-node? subset of #{:element :characters :comment}, default #{:element :characters}
  :location-info pass false to skip generating location meta data, default true

See https://docs.oracle.com/javase/8/docs/api/javax/xml/stream/XMLInputFactory.html
for documentation on xml options. These are the defaults:

  {:allocator                    nil      ; XMLInputFactory/ALLOCATOR
   :coalescing                   true     ; XMLInputFactory/IS_COALESCING
   :namespace-aware              true     ; XMLInputFactory/IS_NAMESPACE_AWARE
   :replacing-entity-references  true     ; XMLInputFactory/IS_REPLACING_ENTITY_REFERENCES
   :supporting-external-entities false    ; XMLInputFactory/IS_SUPPORTING_EXTERNAL_ENTITIES
   :validating                   false    ; XMLInputFactory/IS_VALIDATING
   :reporter                     nil      ; XMLInputFactory/REPORTER
   :resolver                     nil      ; XMLInputFactory/RESOLVER
   :support-dtd                  true     ; XMLInputFactory/SUPPORT_DTD
   }

    
    
    Source
  


find-xmlns

function
Usage: (find-xmlns xml)
Find all xmlns occuring in a root

    
    
    Source
  


indent

function
Usage: (indent e writer & opts)
Emits the XML and indents the result.  WARNING: this is slow
it will emit the XML and read it in again to indent it.  Intended for
debugging/testing only.

    
    
    Source
  


indent-str

function
Usage: (indent-str e & opts)
Emits the XML and indents the result.  Writes the results to a String and returns it

    
    
    Source
  


parse

function
Usage: (parse source & {:keys [include-node? location-info coalescing supporting-external-entities allocator namespace-aware replacing-entity-references validating reporter resolver support-dtd], :or {include-node? #{:characters :element}, location-info true, coalescing true, supporting-external-entities false}})
Parses an XML input source into a a tree of Element records.
The element tree is realized lazily, so huge XML files can be streamed through a depth-first tree walk.

Input source can be a java.io.InputStream or java.io.Reader

Options:

  :include-node? subset of #{:element :characters :comment}, default #{:element :characters}
  :location-info pass false to skip generating location meta data, default true

See https://docs.oracle.com/javase/8/docs/api/javax/xml/stream/XMLInputFactory.html
for documentation on xml options. These are the defaults:

  {:allocator                    nil      ; XMLInputFactory/ALLOCATOR
   :coalescing                   true     ; XMLInputFactory/IS_COALESCING
   :namespace-aware              true     ; XMLInputFactory/IS_NAMESPACE_AWARE
   :replacing-entity-references  true     ; XMLInputFactory/IS_REPLACING_ENTITY_REFERENCES
   :supporting-external-entities false    ; XMLInputFactory/IS_SUPPORTING_EXTERNAL_ENTITIES
   :validating                   false    ; XMLInputFactory/IS_VALIDATING
   :reporter                     nil      ; XMLInputFactory/REPORTER
   :resolver                     nil      ; XMLInputFactory/RESOLVER
   :support-dtd                  true     ; XMLInputFactory/SUPPORT_DTD
   }

    
    
    Source
  


parse-str

function
Usage: (parse-str string & {:keys [include-node? location-info coalescing supporting-external-entities allocator namespace-aware replacing-entity-references validating reporter resolver support-dtd], :or {include-node? #{:characters :element}, location-info true, coalescing true, supporting-external-entities false}})
Parses an XML String into a a tree of Element records.

Options:

  :include-node? subset of #{:element :characters :comment}, default #{:element :characters}
  :location-info pass false to skip generating location meta data, default true

See https://docs.oracle.com/javase/8/docs/api/javax/xml/stream/XMLInputFactory.html
for documentation on xml options. These are the defaults:

  {:allocator                    nil      ; XMLInputFactory/ALLOCATOR
   :coalescing                   true     ; XMLInputFactory/IS_COALESCING
   :namespace-aware              true     ; XMLInputFactory/IS_NAMESPACE_AWARE
   :replacing-entity-references  true     ; XMLInputFactory/IS_REPLACING_ENTITY_REFERENCES
   :supporting-external-entities false    ; XMLInputFactory/IS_SUPPORTING_EXTERNAL_ENTITIES
   :validating                   false    ; XMLInputFactory/IS_VALIDATING
   :reporter                     nil      ; XMLInputFactory/REPORTER
   :resolver                     nil      ; XMLInputFactory/RESOLVER
   :support-dtd                  true     ; XMLInputFactory/SUPPORT_DTD
   }

    
    
    Source
  


print-uri-file-command!

function
Usage: (print-uri-file-command! uri)
Shell command to create a dummy file for xmlns. Execute from a source root.

    
    
    Source
  


qname-local

function
Usage: (qname-local v)
Get the name for this qname

    
    
    Source
  


qname-uri

function
Usage: (qname-uri v)
Get the namespace uri for this qname

    
    
    Source
  


sexp-as-element

function
Usage: (sexp-as-element sexp)
Convert a single sexp into an Element

    
    
    Source
  


sexps-as-fragment

function
Usage: (sexps-as-fragment)
       (sexps-as-fragment sexp)
       (sexps-as-fragment sexp & sexps)
Convert a compact prxml/hiccup-style data structure into the more formal
tag/attrs/content format. A seq of elements will be returned, which may
not be suitable for immediate use as there is no root element. See also
sexp-as-element.

The format is [:tag-name attr-map? content*]. Each vector opens a new tag;
seqs do not open new tags, and are just used for inserting groups of elements
into the parent tag. A bare keyword not in a vector creates an empty element.

To provide XML conversion for your own data types, extend the AsElements
protocol to them.

    
    
    Source
  


uri-file

function
Usage: (uri-file uri)
Dummy file name for :require'ing xmlns uri

    
    
    Source
  


xml-comment

function
Usage: (xml-comment content)
Create a Comment node

    
    
    Source
  

clojure.data.xml.event

Data type for xml pull events

Types



CDataEvent

record

    Fields: [str]
Protocols:
Interfaces: clojure.lang.IHashEq, clojure.lang.IKeywordLookup, clojure.lang.ILookup, clojure.lang.IObj, clojure.lang.IPersistentMap, java.io.Serializable, java.util.Map


CharsEvent

record

    Fields: [str]
Protocols:
Interfaces: clojure.lang.IHashEq, clojure.lang.IKeywordLookup, clojure.lang.ILookup, clojure.lang.IObj, clojure.lang.IPersistentMap, java.io.Serializable, java.util.Map


CommentEvent

record

    Fields: [str]
Protocols:
Interfaces: clojure.lang.IHashEq, clojure.lang.IKeywordLookup, clojure.lang.ILookup, clojure.lang.IObj, clojure.lang.IPersistentMap, java.io.Serializable, java.util.Map


EmptyElementEvent

record

    Fields: [tag attrs nss location-info]
Protocols:
Interfaces: clojure.lang.IHashEq, clojure.lang.IKeywordLookup, clojure.lang.ILookup, clojure.lang.IObj, clojure.lang.IPersistentMap, java.io.Serializable, java.util.Map


EndElementEvent

type

    Fields: []
Protocols:
Interfaces:


QNameEvent

record

    Fields: [qn]
Protocols:
Interfaces: clojure.lang.IHashEq, clojure.lang.IKeywordLookup, clojure.lang.ILookup, clojure.lang.IObj, clojure.lang.IPersistentMap, java.io.Serializable, java.util.Map


StartElementEvent

record

    Fields: [tag attrs nss location-info]
Protocols:
Interfaces: clojure.lang.IHashEq, clojure.lang.IKeywordLookup, clojure.lang.ILookup, clojure.lang.IObj, clojure.lang.IPersistentMap, java.io.Serializable, java.util.Map

Public Variables and Functions



->CDataEvent

function
Usage: (->CDataEvent str)
Positional factory function for class clojure.data.xml.event.CDataEvent.

    
    
    Source
  


->CharsEvent

function
Usage: (->CharsEvent str)
Positional factory function for class clojure.data.xml.event.CharsEvent.

    
    
    Source
  


->CommentEvent

function
Usage: (->CommentEvent str)
Positional factory function for class clojure.data.xml.event.CommentEvent.

    
    
    Source
  


->EmptyElementEvent

function
Usage: (->EmptyElementEvent tag attrs nss location-info)
Positional factory function for class clojure.data.xml.event.EmptyElementEvent.

    
    
    Source
  


->QNameEvent

function
Usage: (->QNameEvent qn)
Positional factory function for class clojure.data.xml.event.QNameEvent.

    
    
    Source
  


->StartElementEvent

function
Usage: (->StartElementEvent tag attrs nss location-info)
Positional factory function for class clojure.data.xml.event.StartElementEvent.

    
    
    Source
  


element-nss

function
Usage: (element-nss {:keys [attrs], :as element})
Get xmlns environment from element

    
    
    Source