Можно экспортировать узел документа модели объекта документа (DOM) в XML- файл с помощью matlab.io.xml.dom.DOMWriter
объект или xmlwrite
функция.
The matlab.io.xml.dom.DOMWriter
класс принадлежит MATLAB® API для обработки XML (MAXP). Как использовать DOMWriter
MAXP объект, представляет узел документа DOM как
matlab.io.xml.dom.Document
объект. Чтобы создать и добавить элементы, текст и другие узлы к узлу документа, используйте классы и методы MAXP. См. matlab.io.xml.dom
. Вам не нужен Java® программа для использования классов MAXP.
Чтобы создать документ 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
файл для набора инструментов Upslope Area Toolbox, который описан в разделе «Отображение пользовательской документации».
Создайте узел документа и корневой элемент, 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
файл для набора инструментов Upslope Area Toolbox, который описан в разделе «Отображение пользовательской документации».
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