AcuteML provides a DOM/Xpath API that you can use to do lower level XML/HTML manipulation if needed.
You can use AcuteML utilities to define custom type constructors from scratch or to override @aml
defined constructors.
Notice that if you don't use @aml
, you should include aml::Node
as one of your fields.
Functions to use for custom html/xml constructor:
- createnode: function to create a node/document
- addnode! : To add nodes (single or a vector of nodes) as a child of given a node/document.
Use these functions, to make a method that calculates the
aml
inside the function and returns all of the fields.
Functions to use for custom html/xml extractor:
- findfirst: to find the first node based on the given node name
- findall: to find all of the nodes based on the given node name
- findcontent : to get the content of a node based on the given name
Use these functions, to make a method that gets the
aml::Node
and calculates and returns all of the fields.
Functions to support mutability:
- updatecontent!: Finds all the elements with the address of string in the node, and updates the content.
Additionally, all the EzXML API are reexported.
In this example we define Identity
with custom constructors:
using AcuteML
mutable struct Identity
pitch::UN{Pitch}
rest::UN{Rest}
unpitched::UN{Unpitched}
aml::Node
end
function Identity(;pitch = nothing, rest = nothing, unpitched = nothing)
# This constructor only allows one the fields to exist - similar to choice element in XS
aml = createnode(AbsNormal, "identity")
if pitch != nothing
addnode!(aml, "pitch", pitch, AbsNormal)
elseif rest != nothing
addnode!(aml, "rest", rest, AbsNormal)
elseif unpitched != nothing
addnode!(aml, "unpitched", unpitched, AbsNormal)
else
error("one of the pitch, rest or unpitched should be given")
end
return Identity(pitch, rest, unpitched, aml)
end
function Identity(;aml)
pitch = findcontent(Pitch, "pitch", aml, AbsNormal)
rest = findcontent(Rest, "rest", aml, AbsNormal)
unpitched = findcontent(Unpitched, "unpitched", aml, AbsNormal)
return Identity(pitch, rest, unpitched, aml)
end