Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - 日本語 -
Справка Scilab >> XML Management > xmlGetValues

xmlGetValues

Проводит синтаксическую проверку и получает значения атрибутов выбранных тегов в XML-файле настроек

Синтаксис

Values = xmlGetValues(path2tag, attributes)
Values = xmlGetValues(path2tag, attributes, XMLsource)

Аргументы

path2tag

уникальная строка: в файле исходного XML-кода, путь, указывающий на выбранный тег, чьи атрибуты нужно прочитать. Путь является списком вложенных тегов, стоящих спереди от требуемого так, что "/a/b/c/d", или, эквивалентно, "//b/c/d". Регистр учитывается.

attributes

вектор или матрица строк: имена атрибуты выбранного тега, чьи значения нужно прочитать. Порядок атрибутов не имеет значения относительно их фактического порядка в теге.

  • Имена атрибутов чувствительны к регистру.
  • На самом деле имена указанного атрибута могут быть определены несколько раз.

XMLsource

указывает на XML-документ из которого нужно извлечь информацию. Это может быть одно из следующих:

  • уникальная строка: путь до исходного XML-файла. По умолчанию рассматривается файл главных настроек SCIHOME+'/XConfiguration.xml'.
  • XML-указатель типа XMLdoc, возвращаемой ранее в качестве внешней инструкции xmlRead(XMLsource),

Values

матрица строковых значений: значения выбранных атрибутов выбранного тега:

  • Если набор выбранных атрибутов attributes указан в виде матрицы с несколькими строками, то используется только первое появление выбранного тега, и Values(i,j) - это значение его атрибутов attributes(i,j).
  • В противном случае, если имена атрибутов attributes указаны в виде вектора-строки, то рассматриваются все появления выбранного тега: результаты возвращаются с одной строкой на появление, и одним столбцом на атрибут. Таким образом, Values(i,j) - это значение атрибутов attributes(j) для i-той встречи тега в документе.
Если ожидаются какие-либо конечные значения в виде чисел, а не литералов (текста), то evstr() может быть применён к ним для получения ожидаемых чисел.

Описание

Когда XML-указатель, возвращённый с помощью xmlRead(..), указан в качестве XMLsource, то xmlGetValues() исползует его напрямую для проверки синтаксиса XML-документа настроек, открытого ранее с помощью xmlRead(..). Это полезно, когда синтаксис одного и того же документа нужно проверить множеством вызовов xmlGetValues(), обычно для обращения к разным XML-тегам. В этом случае не следует забывать закрыть XML-документ после всей обработки.

Когда путь до XML-файла настроек указан в качестве XMLsource, то xmlGetValues() открывает файл, строит его DOM-дерево, проверяет синтаксис дерева для выбранного тега и атрибутов, и, наконец, удаляет дерево и закрывает файл перед тем, как вернуть результаты. Это то, что происходит по умолчанию в соответствии с файлом настроек Xconfiguration.xml, когда нет явного указания XMLsource.

Аргумент path2tag должен быть корректным путём "XPath", соответствующим рекомендациям W3C. Далее приведены примеры. Если путь исползует промежуточный или конечный тег, который не существует, или, если один из ряда атрибутов не существует, то выдаётся ошибка.

Примеры

Пример 1:

Ваши интернет- и прокси-настройки для Scilab хранятся по умолчанию в файле настроек SCIHOME+'/XConfiguration.xml'. Рассмотрим следующий отрывок файла:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<interface height="600" path="1/" version="0.17" width="800">
    <general title="_(General)">
    ...
    </general>
    <web title="_(Web)">
        <body>
            <web command-browser="" command-mailer="" default-browser="true" default-mailer="true"/>
            <proxy enabled="false" host="" password="" port="" user=""/>
            <previous-proxy enabled="false" host="" password="" port="" user=""/>
        </body>
    </web>
    ...
</interface>

Чтобы получить информацию прокси-параметров (тег proxy), требуемый код должен быть:

proxy = xmlGetValues("//web/body/proxy", ["enabled", "host", "port"]);

Пример 2:

xmlGetValues() может также использоваться для получения значений тега, имеющих множество появлений в файле XMLsource. Например, ваши настройки в редакторе Scinotes Scilab'а хэранятся в файле SCIHOME\scinotesConfiguration.xml. Список последних файлов, открытых в Scinotes в следующей части и пути:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Setting version="0.42">
    <!-- SCINOTES configuration -->
    <Profile name="scinotes">
        <!-- .../... -->
        <!-- Recent Opened Files Section  -->
        <recentFiles>
            <document path="C:\Path\to\my\first\working\dir\ged_move_entity.sci"/>
            <document path="C:\Path\to\my\first\working\dir\ged_loop.sci"/>
            <document path="C:\Path\to\my\first\working\dir\test_legend_move.sce"/>
            <document path="C:\Path\to\another\working\dir2\clf.sci"/>
        </recentFiles>
        <!-- .../... -->
    </Profile>
</Setting>

Тогда следующий год извлечёт, вернёт и выведет на экран столбец недавних файлов:

scinotesFile = SCIHOME + "/scinotesConfiguration.xml";
recent = xmlGetValues("//Setting/Profile/recentFiles/document", "path", scinotesFile);
mprintf("%s\n", recent)
C:\Path\to\my\first\working\dir\ged_move_entity.sci
C:\Path\to\my\first\working\dir\ged_loop.sci
C:\Path\to\my\first\working\dir\test_legend_move.sce
C:\Path\to\another\working\dir2\clf.sci

Смотрите также

История

VersionDescription
6.0.2 Введена xmlGetValues(), которая раньше была getPreferencesValue().
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Feb 25 08:54:57 CET 2020