Можно экспортировать узел документа объектной модели документа (DOM) в XML-файл с помощью matlab.io.xml.dom.DOMWriter объект или xmlwrite функция.
matlab.io.xml.dom.DOMWriter класс принадлежит API MATLAB ® для обработки XML (MAXP). Использование MAXPDOMWriter , представляют узел документа DOM как matlab.io.xml.dom.Document объект. Для создания и добавления элементов, текста и других узлов в узел документа используйте классы и методы MAXP. Посмотрите matlab.io.xml.dom. Для использования классов MAXP программное обеспечение Java ® не требуется.
Создание DOM-документа, который можно записать с помощью xmlwrite, использовать com.mathworks.xml.XMLUtils.createDocument. Чтобы создать и добавить узлы в узел документа, используйте методы Java API для обработки XML (JAXP). См. раздел org.w3c.dom описание пакета по адресу https://docs.oracle.com/javase/7/docs/api.
Общие шаги для создания XML-документа:
Создайте узел документа и определите корневой элемент. Этот код создает узел документа путем создания MAXP matlab.io.xml.dom.Document объект:
import matlab.io.xml.dom.* docNode = Document('root_element');
Этот код создает узел документа, который можно использовать с методами JAXP:
docNode = com.mathworks.xml.XMLUtils.createDocument('root_element');Получение узла, соответствующего корневому элементу, путем вызова getDocumentElement. Узел корневого элемента необходим для добавления дочерних узлов.
Добавление узлов элементов, текста, комментариев и атрибутов путем вызова методов узла документа. Полезные методы включают в себя:
createElement
createTextNode
createComment
setAttribute
Чтобы добавить дочерние узлы к родительскому узлу, используйте appendChild.
Совет
Текстовые узлы всегда являются потомками узлов элементов. Чтобы добавить текстовый узел, используйте createTextNode с узлом документа, а затем использовать appendChild с узлом родительского элемента.
DOMWriter ОбъектВ этом примере используется matlab.io.xml.dom.DOMWriter объект для создания info.xml для панели инструментов «Область откоса», которая описана в разделе «Отображение пользовательской документации».
Создайте узел документа и корневой элемент, toc.
import matlab.io.xml.dom.* docNode = Document('toc');
Получить корневой элемент и установить version атрибут.
toc = docNode.getDocumentElement; setAttribute(toc,'version','2.0');
Добавить tocitem узел элемента для страницы продукта. Каждый tocitem элемент в этом файле имеет target атрибут и дочерний текстовый узел.
product = createElement(docNode,'tocitem'); setAttribute(product,'target','upslope_product_page.html'); appendChild(product,createTextNode(docNode,'Upslope Area Toolbox')); appendChild(toc,product);
Добавить комментарий.
appendChild(product,createComment(docNode,' Functions '));Добавить tocitem узел элемента для каждой функции.
functions = {'demFlow','facetFlow','flowMatrix','pixelFlow'};
n = numel(functions);
for idx = 1:n
curr_node = createElement(docNode,'tocitem');
curr_file = [functions{idx} '_help.html'];
setAttribute(curr_node,'target',curr_file);
% Child text is the function name.
appendChild(curr_node,createTextNode(docNode,functions{idx}));
appendChild(product,curr_node);
endЭкспорт узла DOM в info.xmlи просмотрите файл.
xmlFileName = 'info.xml'; writer = matlab.io.xml.dom.DOMWriter; writer.Configuration.FormatPrettyPrint = true; writeToFile(writer,docNode,xmlFileName); type('info.xml');
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<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>xmlwriteВ этом примере используется xmlwrite для создания info.xml для панели инструментов «Область откоса», которая описана в разделе «Отображение пользовательской документации».
docNode = com.mathworks.xml.XMLUtils.createDocument('toc'); toc = docNode.getDocumentElement; toc.setAttribute('version','2.0'); product = docNode.createElement('tocitem'); product.setAttribute('target','upslope_product_page.html'); product.appendChild(docNode.createTextNode('Upslope Area Toolbox')); toc.appendChild(product) product.appendChild(docNode.createComment(' Functions ')); 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 xmlwrite('info.xml',docNode); type('info.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>Чтобы изменить данные в существующем файле:
Импорт файла в узел документа DOM с помощью matlab.io.xml.dom.Parser объект или xmlread.
Выполните обход узла и добавьте или измените данные с помощью таких методов, как:
getElementsByTagName
getFirstChild
getNextSibling
getNodeName
getNodeType
Если вы используете matlab.io.xml.dom.Parser для чтения XML-файла в matlab.io.xml.dom.Document, используйте MATLAB API для классов и методов обработки XML (MAXP). Посмотрите matlab.io.xml.dom. Если вы используете xmlread, используйте Java API для методов обработки XML (JAXP). См. раздел org.w3c.dom описание пакета по адресу https://docs.oracle.com/javase/7/docs/api.
Когда документ DOM содержит все изменения, запишите файл. Для документа MAXP DOM используйте matlab.io.xml.DOMWriter объект. Для документа JAXP DOM используйте xmlwrite.
matlab.io.xml.dom.Document | matlab.io.xml.dom.DOMWriter | xmlwrite