Экспорт в XML-документы

Чтобы записать данные к XML-файлу, используйте функцию xmlwrite. xmlwrite требует, чтобы вы описали файл в узле Объектной модели документа (DOM). Для введения в узлы DOM смотрите то, Что Объектная модель XML-документов (DOM)?

Для получения дополнительной информации см.:

Создание XML-файла

Несмотря на то, что каждый файл отличается, это общие шаги для создания XML-документа:

  1. Создайте узел документа и задайте корневой элемент путем вызова этого метода:

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

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

    • createElement

    • createTextNode

    • createComment

    • setAttribute

    Для полного списка методов и свойств узлов DOM, см. описание пакета org.w3c.dom в https://docs.oracle.com/javase/7/docs/api.

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

    Совет

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

Пример - Создание XML-файла с xmlwrite

Предположим, что вы хотите создать файл 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, выполните эти шаги:

  1. Создайте узел документа и корневой элемент, toc:

    docNode = com.mathworks.xml.XMLUtils.createDocument('toc');
  2. Идентифицируйте корневой элемент и установите атрибут version:

    toc = docNode.getDocumentElement;
    toc.setAttribute('version','2.0');
  3. Добавьте узел элемента tocitem для страницы продукта. Каждый элемент tocitem в этом файле имеет атрибут target и узел дочернего текста:

    product = docNode.createElement('tocitem');
    product.setAttribute('target','upslope_product_page.html');
    product.appendChild(docNode.createTextNode('Upslope Area Toolbox'));
    toc.appendChild(product)
  4. Добавьте комментарий:

    product.appendChild(docNode.createComment(' Functions '));
  5. Добавьте узел элемента 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
  6. Экспорт узел DOM к info.xml и представление файл с функцией type:

    xmlwrite('info.xml',docNode);
    type('info.xml');

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

Чтобы изменить данные в существующем файле, вызовите xmlread, чтобы импортировать файл в узел DOM. Пересеките узел и добавьте или измените методы использования данных, заданные консорциумом Всемирной паутины, такие как:

  • getElementsByTagName

  • getFirstChild

  • getNextSibling

  • getNodeName

  • getNodeType

Когда узел DOM будет содержать все ваши изменения, вызовите xmlwrite, чтобы перезаписать файл.

Для полного списка методов и свойств узлов DOM, см. описание пакета org.w3c.dom в https://docs.oracle.com/javase/7/docs/api.

Для примеров, которые используют эти методы, см.:

Была ли эта тема полезной?