To write data to an XML file, use the xmlwrite
function. xmlwrite
requires
that you describe the file in a Document Object Model (DOM) node.
For an introduction to DOM nodes, see What Is an XML Document Object Model (DOM)?
For more information, see:
Although each file is different, these are common steps for creating an XML document:
Create a document node and define the root element by calling this method:
docNode = com.mathworks.xml.XMLUtils.createDocument('root_element');
Get the node corresponding to the root element by calling getDocumentElement
.
The root element node is required for adding child nodes.
Add element, text, comment, and attribute nodes by calling methods on the document node. Useful methods include:
createElement
createTextNode
createComment
setAttribute
For a complete list of the methods and properties of DOM nodes,
see the org.w3c.dom
package description at https://docs.oracle.com/javase/7/docs/api
.
As needed, define parent/child relationships by calling appendChild
on
the parent node.
Tip
Text nodes are always children of element nodes. To add a text
node, call createTextNode
on the document node,
and then call appendChild
on the parent element
node.
Suppose that you want to create an info.xml
file for the Upslope Area
Toolbox (described in Display Custom Documentation), as follows:
<?xml version="1.0" encoding="utf-8"?> <toc version="2.0"> <tocitem target="upslope_product_page.html">Upslope Area Toolbox<!-- Functions --> <tocitem target="demFlow_help.html">demFlow</tocitem> <tocitem target="facetFlow_help.html">facetFlow</tocitem> <tocitem target="flowMatrix_help.html">flowMatrix</tocitem> <tocitem target="pixelFlow_help.html">pixelFlow</tocitem> </tocitem> </toc>
To create this file using xmlwrite
, follow
these steps:
Create the document node and root element, toc
:
docNode = com.mathworks.xml.XMLUtils.createDocument('toc');
Identify the root element, and set the version
attribute:
toc = docNode.getDocumentElement; toc.setAttribute('version','2.0');
Add the tocitem
element node for the
product page. Each tocitem
element in this file
has a target
attribute and a child text node:
product = docNode.createElement('tocitem'); product.setAttribute('target','upslope_product_page.html'); product.appendChild(docNode.createTextNode('Upslope Area Toolbox')); toc.appendChild(product)
Add the comment:
product.appendChild(docNode.createComment(' Functions '));
Add a tocitem
element node for each
function, where the target
is of the form
:function
_help.html
functions = {'demFlow','facetFlow','flowMatrix','pixelFlow'}; for idx = 1:numel(functions) curr_node = docNode.createElement('tocitem'); curr_file = [functions{idx} '_help.html']; curr_node.setAttribute('target',curr_file); % Child text is the function name. curr_node.appendChild(docNode.createTextNode(functions{idx})); product.appendChild(curr_node); end
Export the DOM node to info.xml
, and
view the file with the type
function:
xmlwrite('info.xml',docNode); type('info.xml');
To change data in an existing file, call xmlread
to import the file into a DOM
node. Traverse the node and add or change data using methods defined
by the World Wide Web consortium, such as:
getElementsByTagName
getFirstChild
getNextSibling
getNodeName
getNodeType
When the DOM node contains all your changes, call xmlwrite
to
overwrite the file.
For a complete list of the methods and properties of DOM nodes,
see the org.w3c.dom
package description at https://docs.oracle.com/javase/7/docs/api
.
For examples that use these methods, see: