| Version: | 0.1.2 | 
| Date: | 2020-05-06 | 
| Title: | Read, Write and Work with 'XML' Data | 
| Maintainer: | Per Nyfelt <per@alipsa.se> | 
| Depends: | R (≥ 3.1.0) | 
| Encoding: | UTF-8 | 
| Description: | 'XML' package for creating and reading and manipulating 'XML', with an object model based on 'Reference Classes'. | 
| License: | MIT + file LICENSE | 
| URL: | https://github.com/Alipsa/xmlr | 
| BugReports: | https://github.com/Alipsa/xmlr/issues | 
| Imports: | methods | 
| Suggests: | testthat, knitr, rmarkdown | 
| Collate: | 'xmlr.R' 'utils.R' 'AbstractClass.R' 'Content.R' 'Document.R' 'Text.R' 'Element.R' 'Stack.R' 'DomBuilder.R' 'Parser.R' 'xmlImporter.R' 'xmlConverter.R' | 
| RoxygenNote: | 7.1.0 | 
| VignetteBuilder: | knitr | 
| NeedsCompilation: | no | 
| Packaged: | 2020-05-06 18:45:58 UTC; per | 
| Author: | Per Nyfelt [cre, aut], Alipsa HB [cph], Steven Brandt [ctb] | 
| Repository: | CRAN | 
| Date/Publication: | 2020-05-12 09:30:02 UTC | 
Reference Class representing a non instantiable class
Description
An abstract base class with some utility methods
An abstract reference class representing content that can belong to an Element
Description
#' @field m_parent the parent (if any)
Reference Class representing an XML document
Description
The base container for the DOM
Usage
## S4 method for signature 'Document'
as.vector(x)
## S4 method for signature 'Document'
as.character(x)
Arguments
| x | the object to convert | 
Details
Methods allow access to the root element as well as the DocType and other document-level information.
Methods (by generic)
-  as.vector: as.vector(Document)
-  as.character: as.character(Document)
Methods
- getBaseURI()
- return the URI from which this document was loaded 
- setBaseURI(uri)
- Sets the effective URI from which this document was loaded 
Create a xmlr object tree based on parsing events
Description
Create a xmlr object tree based on parsing events
Methods
- endDocument()
- Event signalling parsing has completed 
- endElement(name)
- end element event; @param name the element name 
- startDocument()
- Event signalling parsing has begun 
- startElement(name, attributes)
- start element event; @param name the element name, @param attributes a named list of attributes 
- text(text)
- text event; @param text the character content of the Text node 
Element, A reference class representing an XML tag
Description
An XML element. Methods allow the user to get and manipulate its child elements and content, directly access the element's textual content, and manipulate its attributes.
Usage
## S4 method for signature 'Element'
as.vector(x)
## S4 method for signature 'Element'
as.character(x)
Arguments
| x | the object to convert | 
Methods (by generic)
-  as.vector: as.vector(Element)
-  as.character: as.character(Element)
Fields
- name
- The local name of the element 
- contentList
- all the children of this element 
- attributeList
- a list of all the attributes belonging to this element 
Methods
- addAttributes(attributes)
- Add the supplied attributes to the attributeList of this Element 
- addContent(content)
- Appends the child to the end of the content list. return the parent (the calling object) 
- contentIndex(content)
- Find the position of the content in the contentList or -1 if not found 
- getAttribute(name)
- Get an attribute value 
- getAttributes()
- Get the list of attributes 
- getChild(name)
- Return the first child element matching the name 
- getChildren()
- Get all the child Elements belong to this Element 
- getContent()
- Returns the full content of the element as a List that may contain objects of type Text, Element, Comment, ProcessingInstruction, CDATA, and EntityRef 
- getName()
- Return the name of this Element 
- getText()
- Return the text content of this element if any 
- hasAttributes()
- return TRUE if this element has any attributes, otherwise FALSE 
- hasChildren()
- Return TRUE if this element has any child Element nodes 
- hasContent()
- return TRUE if this element has any content, otherwise FALSE 
- hasText()
- Return TRUE if this element has a Text node 
- removeContent(content)
- Remove the specified content from this element 
- removeContentAt(index)
- Remove the content at the given index and return the content that was removed 
- setAttribute(name, value)
- Add or replace an attribute, parameters will be converted to characters 
- setAttributes(attributes)
- Replace the attributes with this named list, NULL or empty list will remove all attributes, all values will be converted to characters 
- setName(name)
- Set the name of this Element 
- setText(text)
- Replace all content with the text supplied 
Parse an xml string and create sax like events
Description
an XML parser based on an article on creating a quick and dirty xml parser by Steven Brandt: https://www.javaworld.com/article/2077493/java-tip-128–create-a-quick-and-dirty-xml-parser.html
A general purpose linked stack
Description
A general purpose linked stack
Fields
- size
- the size of the stack (number of elements in the stack) 
- stackNode
- an envronment containing the current element and the one under 
Methods
- peek()
- Get the top element from the stack without changing it 
- pop()
- Pull the top element from the stack removing it from the stack 
- push(val)
- Add an element to the top of the stack 
- size()
- Get the current size of the stack 
Reference class representing text content
Description
Reference class representing text content
as.vector for Text classes
as.character for Text classes
Usage
## S4 method for signature 'Text'
as.vector(x)
## S4 method for signature 'Text'
as.character(x)
Arguments
| x | the object to convert | 
Details
An XML character sequence. Provides a modular, parentable method of representing text.
Methods (by generic)
-  as.vector: as.vector(Text)
-  as.character: as.character(Text)
Common utility functions
Description
Common utility functions
Usage
isRc(x, clazz = "refClass")
Arguments
| x | the object to check | 
| clazz | the name of the class e.g. "Element" for the Element class. Optional, if omitted it checks that the object is a reference class | 
Value
A boolean indicating whether the object x belongs to the class or not
Functions
-  isRc: Check if the object is a reference class, similar to isS4().
XML import functions
Description
XML import functions
Usage
parse.xmlstring(xml)
parse.xmlfile(fileName)
Arguments
| xml | an xml character string to parse | 
| fileName | the name of the xml file to parse | 
Value
a Document object
Functions
-  parse.xmlstring: create a Document from a character string
-  parse.xmlfile: create a Document from a xml file
xmlr
Description
A package for creating and reading and manipulating XML inspired by JDOM (http://www.jdom.org/), implemented with Reference Classes.
Examples
library("xmlr")
doc <- Document$new()
root <- Element$new("table")
root$setAttribute("xmlns", "http://www.w3.org/TR/html4/")
doc$setRootElement(root)
root$addContent(
  Element$new("tr")
    $addContent(Element$new("td")$setText("Apples"))
    $addContent(Element$new("td")$setText("Bananas"))
)
table <- doc$getRootElement()
stopifnot(table$getName() == "table")
stopifnot(table$getAttribute("xmlns") == "http://www.w3.org/TR/html4/")
children <- table$getChild("tr")$getChildren()
stopifnot(length(children) == 2)
stopifnot(children[[1]]$getText() == "Apples")
stopifnot(children[[2]]$getText() == "Bananas")
# you can also parse character strings (or parse a file using parse.xmlfile(fileName))
doc <- parse.xmlstring("<foo><bar><baz val='the baz attribute'/></bar></foo>")
Create a data frame from a xmlr Element
Description
This is a convenience method to take all the children of the given Element and create a data frame based on the content of each child where each child constitutes a row and the attributes or elements (including text) will constitute the columns. It assumes a homogeneous structure and the column names are takes from the first child
Usage
xmlrToDataFrame(element)
Arguments
| element | the element to convert | 
Value
a data frame