Экспорт модели объекта документа в XML- Файл

Можно экспортировать узел документа модели объекта документа (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.

Создание документа DOM

Общие шаги для создания XML-документа включают:

  1. Создайте узел документа и определите корневой элемент. Этот код создает узел документа путем создания MAXP matlab.io.xml.dom.Document объект:

    import matlab.io.xml.dom.*
    docNode = Document('root_element');

    Этот код создает узел документа, который можно использовать с методами JAXP:

    docNode = com.mathworks.xml.XMLUtils.createDocument('root_element');
  2. Получите узел, который соответствует корневому элементу, путем вызова getDocumentElement. Узел корневого элемента необходим для добавления дочерних узлов.

  3. Добавить элемент, текст, комментарии и узлы атрибутов можно путем вызова методов узла документа. Полезные методы включают:

    • createElement

    • createTextNode

    • createComment

    • setAttribute

  4. Для добавления дочерних узлов к родительскому узлу используйте appendChild.

    Совет

    Текстовые узлы всегда являются дочерними элементами узлов элемента. Чтобы добавить текстовый узел, используйте createTextNode с узлом документа, а затем используйте appendChild с узлом родительского элемента.

Запись узла DOM-документа в XML- Файл с использованием MAXP- 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>

Запись узла DOM-документа в XML- Файл с помощью 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>

Обновление существующего XML- Файл

Чтобы изменить данные в существующем файле:

  1. Импортируйте файл в узел документа DOM с помощью matlab.io.xml.dom.Parser объект или xmlread.

  2. Пройдите по узлу и добавьте или измените данные с помощью методов, таких как:

    • 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.

  3. Когда документ DOM содержит все ваши изменения, запишите файл. Для документа MAXP DOM используйте matlab.io.xml.DOMWriter объект. Для документа JAXP DOM используйте xmlwrite.

См. также

| |

Похожие темы

Внешние веб-сайты