Write XML Document Object Model node
Write an XML file by, first, creating a Document Object Model(DOM) node containing the XML data. Then, write the DOM node to an XML file. The final XML file should contain this text.
<?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>
First, create the DOM node object and root element, and populate the elements and the attributes of the node corresponding to the XML data.
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 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
Finally, export the DOM node to an XML file named infoUAT.xml
, and view the file using the type
function.
xmlwrite('infoUAT.xml',docNode); type('infoUAT.xml');
<?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>
Read a DOM node from a sample XML file and get the contents of the DOM node as a character vector.
Display the contents of the sample XML file, and then import the DOM node from the file.
sampleXMLfile = 'sample.xml';
type(sampleXMLfile)
<productinfo> <matlabrelease>R2012a</matlabrelease> <name>Example Manager</name> <type>internal</type> <icon>ApplicationIcon.DEMOS</icon> <list> <listitem> <label>Example Manager</label> <callback>com.mathworks.xwidgets.ExampleManager.showViewer </callback> <icon>ApplicationIcon.DEMOS</icon> </listitem> </list> </productinfo>
DOMnode = xmlread(sampleXMLfile);
Use xmlwrite
to return the DOMnode
object as a serialized character vector.
text = xmlwrite(DOMnode)
text = '<?xml version="1.0" encoding="utf-8"?> <productinfo> <matlabrelease>R2012a</matlabrelease> <name>Example Manager</name> <type>internal</type> <icon>ApplicationIcon.DEMOS</icon> <list> <listitem> <label>Example Manager</label> <callback>com.mathworks.xwidgets.ExampleManager.showViewer </callback> <icon>ApplicationIcon.DEMOS</icon> </listitem> </list> </productinfo>'
filename
— File nameFile name, specified as a character vector or string scalar containing the name of the local file or URL.
Data Types: char
| string
DOMnode
— Document Object Model(DOM) nodeDocument Object Model(DOM) node, specified as a DOM node object.
Document Object Model is defined by the World Wide Web consortium. For more information, see What Is an XML Document Object Model (DOM)?.
You have a modified version of this example. Do you want to open this example with your edits?