Чтобы записать данные к XML-файлу, используйте функцию xmlwrite
. xmlwrite
требует, чтобы вы описали файл в узле Объектной модели документа (DOM). Для введения в узлы DOM смотрите то, Что Объектная модель XML-документов (DOM)?
Для получения дополнительной информации см.:
Несмотря на то, что каждый файл отличается, это общие шаги для создания XML-документа:
Создайте узел документа и задайте корневой элемент путем вызова этого метода:
docNode = com.mathworks.xml.XMLUtils.createDocument('root_element');
Получите узел, соответствующий корневому элементу путем вызова getDocumentElement
. Корневой узел элемента требуется для добавления дочерних узлов.
Добавьте элемент, текст, комментарий, и припишите узлы вызывающими методами для узла документа. Полезные методы включают:
createElement
createTextNode
createComment
setAttribute
Для полного списка методов и свойств узлов DOM, см. описание пакета org.w3c.dom
в https://docs.oracle.com/javase/7/docs/api
.
По мере необходимости задайте родительские/дочерние отношения путем вызова appendChild
на родительском узле.
Текстовые узлы всегда являются дочерними элементами узлов элемента. Чтобы добавить текстовый узел, вызовите createTextNode
на узле документа, и затем вызовите appendChild
на узле родительского элемента.
Предположим, что вы хотите создать файл info.xml
для Upslope Area Toolbox (описанный в Отображении пользовательской документации), можно следующим образом:
<?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>
Чтобы создать этот файл с помощью xmlwrite
, выполните эти шаги:
Создайте узел документа и корневой элемент, toc
:
docNode = com.mathworks.xml.XMLUtils.createDocument('toc');
Идентифицируйте корневой элемент и установите атрибут version
:
toc = docNode.getDocumentElement; toc.setAttribute('version','2.0');
Добавьте узел элемента tocitem
для страницы продукта. Каждый элемент tocitem
в этом файле имеет атрибут target
и узел дочернего текста:
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 '));
Добавьте узел элемента tocitem
для каждой функции, где target
имеет форму
: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
Экспортируйте узел DOM в info.xml
и просмотрите файл с функцией type
:
xmlwrite('info.xml',docNode); type('info.xml');
Чтобы изменить данные в существующем файле, вызовите xmlread
, чтобы импортировать файл в узел DOM. Пересеките узел и добавьте или измените методы использования данных, заданные консорциумом Всемирной паутины, такие как:
getElementsByTagName
getFirstChild
getNextSibling
getNodeName
getNodeType
Когда узел DOM будет содержать все ваши изменения, вызовите xmlwrite
, чтобы перезаписать файл.
Для полного списка методов и свойств узлов DOM, см. описание пакета org.w3c.dom
в https://docs.oracle.com/javase/7/docs/api
.
Для примеров, которые используют эти методы, см.: