XMLImportOptions

Настройки импорта объект для XML- Файлы

Описание

Система координат XMLImportOptions позволяет вам задать, как MATLAB® импортирует структурированные табличные данные из XML- файлов. Объект содержит свойства, которые управляют процессом импорта данных, включая обработку ошибок и недостающих данных.

Создание

Можно создать XMLImportOptions объект, использующий либо xmlImportOptions функцию (описанную здесь) или detectImportOptions функция:

  • Использование xmlImportOptions для определения свойств импорта на основе ваших требований к импорту.

  • Использование detectImportOptions обнаружение и заполнение свойств импорта на основе содержимого XML- файла, заданного в filename.

    opts = detectImportOptions(filename)

Описание

opts = xmlImportOptions создает XMLImportOptions объект с одной переменной.

opts = xmlImportOptions('NumVariables',numVars) создает объект с количеством переменных, заданным в numVars.

пример

opts = xmlImportOptions(___,Name,Value) задает дополнительные свойства для XMLmportOptions объект с использованием одного или нескольких аргументов в виде имя-значение.

Входные параметры

расширить все

Количество переменных, заданное как положительное скалярное целое число.

Свойства

расширить все

Свойства переменной

Имена переменных, заданные как массив ячеек из векторов символов или строковых массивов. The VariableNames свойство содержит имена, используемые при импорте переменных.

Если данные содержат N переменные, но имена переменных не заданы, затем VariableNames свойство содержит {'Var1','Var2',...,'VarN'}.

Чтобы поддержать недопустимые идентификаторы MATLAB в качестве имен переменных, таких как имена переменных, содержащие пространства и символы, отличные от ASCII, задайте значение VariableNamingRule на 'preserve'.

Пример: opts.VariableNames возвращает текущие (обнаруженные) имена переменных.

Пример: opts.VariableNames(3) = {'Height'} изменяет имя третьей переменной на Height.

Типы данных: char | string | cell

Флаг для сохранения имен переменных, заданный как разделенная разделенными запятой парами, состоящая из VariableNamingRule и любой из них 'modify' или 'preserve'.

  • 'modify' - Преобразуйте недопустимые имена переменных (как определено isvarname function) для действительных идентификаторов MATLAB.

  • 'preserve' - Сохраните имена переменных, которые не являются допустимыми идентификаторами MATLAB, такими как имена переменных, которые включают пространства и символы, отличные от ASCII.

Начиная с R2019b, имена переменных и имена строк могут включать любые символы, включая пространства и символы, отличные от ASCII. Кроме того, они могут начинаться с любых символов, а не только букв. Переменная и имена строк не должны быть допустимыми идентификаторами MATLAB (как определяется isvarname функция). Чтобы сохранить эти имена переменных и имена строк, задайте значение VariableNamingRule на 'preserve'.

Типы данных: char | string

Тип данных переменной, заданный как массив ячеек из векторов символов или строковые массивы, содержащий набор допустимых имен типов данных. The VariableTypes свойство определяет типы данных, которые будут использоваться при импорте переменных.

Как обновить VariableTypes свойство, используйте setvartype функция.

Пример: opts.VariableTypes возвращает текущие типы данных переменных.

Пример: opts = setvartype(opts,'Height',{'double'}) изменяет тип данных переменной Height на double.

Подмножество переменных для импорта, заданное как вектор символов, строковый скаляр, массив ячеек векторов символов, строковые массивы или массив числовых индексов.

SelectedVariableNames должен быть подмножеством имен, содержащихся в VariableNames свойство. По умолчанию SelectedVariableNames содержит все имена переменных из VariableNames свойство, что означает, что все переменные импортируются.

Используйте SelectedVariableNames свойство для импорта только интересующих переменных. Задайте подмножество переменных, используя SelectedVariableNames свойство и использование readtable для импорта только этого подмножества.

Чтобы поддержать недопустимые идентификаторы MATLAB в качестве имен переменных, таких как имена переменных, содержащие пространства и символы, отличные от ASCII, задайте значение VariableNamingRule на 'preserve'.

Пример: opts.SelectedVariableNames = {'Height','LastName'} выбирает только две переменные, Height и LastName, для операции импорта.

Пример: opts.SelectedVariableNames = [1 5] выбирает только две переменные, первую и пятую переменные, для операции импорта.

Пример: T = readtable(filename,opts) возвращает таблицу, содержащую только переменные, указанные в SelectedVariableNames свойство opts объект.

Типы данных: uint16 | uint32 | uint64 | char | string | cell

Введите конкретные настройки импорта переменных, возвращенные как массив объектов настроек импорта переменных. Массив содержит объект, соответствующий каждой переменной, заданной в VariableNames свойство. Каждый объект в массиве содержит свойства, поддерживающие импорт данных с определенным типом данных.

Опции переменной поддерживают следующие типы данных: число, текст, logical, datetime, или categorical.

Чтобы запросить текущие (или обнаруженные) опции для переменной, используйте getvaropts функция.

Чтобы задать и настроить опции для переменной, используйте setvaropts функция.

Пример: opts.VariableOptions возвращает набор VariableImportOptions объекты, по одному, соответствующий каждой переменной в данных.

Пример: getvaropts(opts,'Height') возвращает VariableImportOptions объект для Height переменная.

Пример: opts = setvaropts(opts,'Height','FillValue',0) устанавливает FillValue свойство для переменной Height на 0.

Описание переменной XPath выражение, заданное как вектор символов или строковый скаляр, который читается функцией чтения, используется для выбора описаний табличных переменных. Вы должны задать VariableDescriptionsSelector как допустимое выражение XPath версии 1.0.

Пример: 'VariableDescriptionsSelector','/RootNode/ChildNode'

Табличная переменная XPath выражения, заданные как массив ячеек из векторов символов или строковых массивов, который функция чтения использует для выбора табличных переменных. Вы должны задать VariableSelectors как допустимые выражения XPath версии 1.0.

Пример: 'VariableSelectors',{'/RootNode/ChildNode'}

Пример: 'VariableSelectors',"/RootNode/ChildNode"

Пример: 'VariableSelectors',["/RootNode/ChildNode1","/RootNode/ChildNode2"]

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

Пример: 'VariableUnitsSelector','/RootNode/ChildNode'

Свойства таблицы

Строка таблицы называет выражение XPath, заданное в виде вектора символов или строкового скаляра, который функция чтения использует для выбора имен строк таблицы. Вы должны задать RowNamesSelector как допустимое выражение XPath версии 1.0.

Пример: 'RowNamesSelector','/RootNode/ChildNode'

Выражение строки таблицы XPath, заданное как вектор символов или строковый скаляр, который функция чтения использует для выбора отдельных строк выхода таблицы. Вы должны задать RowSelector как допустимое выражение XPath версии 1.0.

Пример: 'RowSelector','/RootNode/ChildNode'

Табличные данные XPath выражение, заданное как вектор символов или строковый скаляр, который функция чтения использует для выбора выхода данных таблицы. Вы должны задать TableSelector как допустимое выражение XPath версии 1.0.

Пример: 'TableSelector','/RootNode/ChildNode'

Набор зарегистрированных префиксов пространства имен XML, заданный как разделенная разделенными запятой парами, состоящая из RegisteredNamespaces и массив префиксов. Функция чтения использует эти префиксы при вычислении выражений XPath в XML- файл. Задайте префиксы пространства имен и связанные с ними URL-адреса как Nx2 строковые массивы. RegisteredNamespaces может использоваться, когда вы также вычисляете выражение XPath, заданное аргументом имя-значение селектора, таким как StructSelector для readstruct, или VariableSelectors для readtable и readtimetable.

По умолчанию функция чтения автоматически обнаруживает префиксы пространства имен, чтобы зарегистрироваться для использования в оценке XPath, но можно также зарегистрировать новые префиксы пространства имен, используя RegisteredNamespaces аргумент имя-значение. Можно зарегистрировать новый префикс пространства имен, если у XML- узел есть URL-адрес пространства имен, но нет объявленного префикса пространства имен в XML- файла.

Для примера вычислите выражение XPath для XML- файла, вызываемого example.xml который не содержит префикса пространства имен. Задайте 'RegisteredNamespaces' как [“myprefix”, “https://www.mathworks.com”] для назначения префикса myprefix на URL- https://www.mathworks.com.

T = readtable("example.xml", "VariableSelector", "/myprefix:Data",...
 "RegisteredNamespaces", [“myprefix”, “https://www.mathworks.com”])

Пример: 'RegisteredNamespaces',[“myprefix”, “https://www.mathworks.com”]

Правила замены

Процедура управления отсутствующими данными, заданная в качестве одного из значений в этой таблице.

Отсутствующее правилоПоведение
'fill'

Замените отсутствующие данные на содержимое FillValue свойство.

The FillValue свойство задано в VariableImportOptions объект импортируемой переменной. Для получения дополнительной информации о доступе к FillValue свойство, см. getvaropts.

'error'Остановите импорт и отобразите сообщение об ошибке, показывающее отсутствующие запись и поле.
'omitrow'Опускать строки, которые содержат отсутствующие данные.
'omitvar'Опускайте переменные, которые содержат отсутствующие данные.

Пример: opts.MissingRule = 'omitrow';

Типы данных: char | string

Процедура обработки ошибок импорта, заданная как одно из значений в этой таблице.

Правило импорта ошибокПоведение
'fill'

Замените данные, в которых произошла ошибка, содержимым FillValue свойство.

The FillValue свойство задано в VariableImportOptions объект импортируемой переменной. Для получения дополнительной информации о доступе к FillValue свойство, см. getvaropts.

'error'Остановите импорт и отобразите сообщение об ошибке, показывающее запись и поле, вызывающие ошибку.
'omitrow'Опускать строки, в которых происходят ошибки.
'omitvar'Опускайте переменные, где происходят ошибки.

Пример: opts.ImportErrorRule = 'omitvar';

Типы данных: char | string

Процедура обработки повторяющихся XML- узлы в заданной строке таблицы, заданная как 'addcol', 'ignore', или 'error'.

Повторное правило узла

Поведение

'addcol'

Добавьте столбцы для повторяющихся узлов под заголовком переменной в таблице. Определение значения 'RepeatedNodeRule' как 'addcol' не создает отдельную переменную в таблице для повторяющегося узла.

'ignore'

Пропустите импорт повторяющихся узлов.

'error'Отображение сообщения об ошибке и прекращение операции импорта.

Пример: 'RepeatedNodeRule','ignore'

Примеры

свернуть все

Создайте XML- настройки импорта для XML- файл, укажите переменные для импорта, а затем прочитайте данные.

Файл XML students.xml имеет четыре одноуровневых узла с именем Student, каждый из которых содержит одни и те же дочерние узлы и атрибуты.

type students.xml
<?xml version="1.0" encoding="utf-8"?>
<Students>
    <Student ID="S11305">
        <Name FirstName="Priya" LastName="Thompson" />
        <Age>18</Age>
        <Year>Freshman</Year>
        <Address>
            <Street xmlns="https://www.mathworks.com">591 Spring Lane</Street>
            <City>Natick</City>
            <State>MA</State>
      </Address>
      <Major>Computer Science</Major>
      <Minor>English Literature</Minor>
   </Student>
   <Student ID="S23451">
        <Name FirstName="Conor" LastName="Cole" />
        <Age>18</Age>
        <Year>Freshman</Year>
        <Address>
            <Street xmlns="https://www.mathworks.com">4641 Pearl Street</Street>
            <City>San Francisco</City>
            <State>CA</State>
        </Address>
        <Major>Microbiology</Major>
        <Minor>Public Health</Minor>
    </Student>
    <Student ID="S119323">
        <Name FirstName="Morgan" LastName="Yang" />
        <Age>21</Age>
        <Year>Senior</Year>
        <Address>
            <Street xmlns="https://www.mathworks.com">30 Highland Road</Street>
            <City>Detriot</City>
            <State>MI</State>
        </Address>
        <Major>Political Science</Major>
   </Student>
   <Student ID="S201351">
        <Name FirstName="Salim" LastName="Copeland" />
        <Age>19</Age>
        <Year>Sophomore</Year>
        <Address>
            <Street xmlns="https://www.mathworks.com">3388 Moore Avenue</Street>
            <City>Fort Worth</City>
            <State>TX</State>
        </Address>
        <Major>Business</Major>
        <Minor>Japanese Language</Minor>
   </Student>
   <Student ID="S201351">
        <Name FirstName="Salim" LastName="Copeland" />
        <Age>20</Age>
        <Year>Sophomore</Year>
        <Address>
            <Street xmlns="https://www.mathworks.com">3388 Moore Avenue</Street>
            <City>Fort Worth</City>
            <State>TX</State>
        </Address>
        <Major>Business</Major>
        <Minor>Japanese Language</Minor>
    </Student>
    <Student ID="54600">
        <Name FirstName="Dania" LastName="Burt" />
        <Age>22</Age>
        <Year>Senior</Year>
        <Address>
            <Street xmlns="https://www.mathworks.com">22 Angie Drive</Street>
            <City>Los Angeles</City>
            <State>CA</State>
        </Address>
        <Major>Mechanical Engineering</Major>
        <Minor>Architecture</Minor>
   </Student>
    <Student ID="453197">
        <Name FirstName="Rikki" LastName="Gunn" />
        <Age>21</Age>
        <Year>Junior</Year>
        <Address>
            <Street xmlns="https://www.mathworks.com">65 Decatur Lane</Street>
            <City>Trenton</City>
            <State>ME</State>
        </Address>
        <Major>Economics</Major>
        <Minor>Art History</Minor>
   </Student>
</Students>

Создайте XMLImportOptions объект из файла. Задайте значение VariableSelectors как //@FirstName для выбора FirstName узел элемента для импорта в виде табличной переменной.

opts = xmlImportOptions("VariableSelectors","//@FirstName")
opts = 
  XMLImportOptions with properties:

   Replacement Properties:
                     MissingRule: "fill"
                 ImportErrorRule: "fill"
                RepeatedNodeRule: "addcol"

   Variable Import Properties: Set types by name using setvartype
                   VariableNames: "Var1"
                   VariableTypes: "char"
           SelectedVariableNames: "Var1"
                 VariableOptions: Show all 1 VariableOptions 
	Access VariableOptions sub-properties using setvaropts/getvaropts
              VariableNamingRule: "preserve"

   Location Properties:
                   TableSelector: <missing>
                     RowSelector: <missing>
               VariableSelectors: "//@FirstName"
           VariableUnitsSelector: <missing>
    VariableDescriptionsSelector: <missing>
                RowNamesSelector: <missing>
            RegisteredNamespaces: [0x2 string]

Использование readtable наряду с объектом опции для импорта указанной переменной.

T = readtable("students.xml",opts)
T=7×1 table
       Var1   
    __________

    {'Priya' }
    {'Conor' }
    {'Morgan'}
    {'Salim' }
    {'Salim' }
    {'Dania' }
    {'Rikki' }

Зарегистрируйте пользовательский префикс пространства имен XML на существующий URL-адрес пространства имен в файле входа с помощью RegisteredNamespaces аргумент имя-значение.

Создайте XMLImportOptions объект из XML- файл. Задайте выражение XPath Street узел элемента как значение 'VariableSelectors', и зарегистрировать префикс myPrefix к URL-адресу, принадлежащему Street узел.

opts = detectImportOptions("students.xml","RegisteredNamespaces", ["myPrefix","https://www.mathworks.com"],...
    "VariableSelectors","//myPrefix:Street")
opts = 
  XMLImportOptions with properties:

   Replacement Properties:
                     MissingRule: "fill"
                 ImportErrorRule: "fill"
                RepeatedNodeRule: "addcol"

   Variable Import Properties: Set types by name using setvartype
                   VariableNames: "Street"
                   VariableTypes: "string"
           SelectedVariableNames: "Street"
                 VariableOptions: Show all 1 VariableOptions 
	Access VariableOptions sub-properties using setvaropts/getvaropts
              VariableNamingRule: "preserve"

   Location Properties:
                   TableSelector: <missing>
                     RowSelector: <missing>
               VariableSelectors: "//myPrefix:Street"
           VariableUnitsSelector: <missing>
    VariableDescriptionsSelector: <missing>
                RowNamesSelector: <missing>
            RegisteredNamespaces: ["myPrefix"    "https://www.mathworks.com"]

Используйте readtable функция вместе с объектом опции для импорта выбранной переменной.

T2 = readtable("students.xml",opts)
T2=7×1 table
          Street       
    ___________________

    "591 Spring Lane"  
    "4641 Pearl Street"
    "30 Highland Road" 
    "3388 Moore Avenue"
    "3388 Moore Avenue"
    "22 Angie Drive"   
    "65 Decatur Lane"  

Совет

  • Следующие синтаксисы XPath поддерживаются для аргументов имя-значение селектора XPath, таких как RowSelector или VariableSelector.

    • Чтобы выбрать каждый узел, имя которого соответствует узлу, который вы хотите выбрать, независимо от его расположения в документе, используйте "//myNode" синтаксис. Можно использовать "//myNode" чтобы опустить выражение XPath, которое предшествует выбранному узлу.

    • Чтобы считать один из нескольких одноуровневых узлов под одним родительским узлом в файле, можно задать ChildNode [n], где n соответствует одноуровневому узлу, который необходимо индексировать. Для примера путь "/RootNode/ChildNode[2]" выбирает вторую ChildNode элемент, родительский элемент RootNode.

    • Чтобы считать значение атрибута, принадлежащего узлу элемента в вход XML- файл, задайте @ перед именем атрибута. Для примера, "/RootNode/ChildNode[2]/@AttributeName" выбирает атрибут AttributeName принадлежность ко второму ChildNode элемент, родительский элемент RootNode.

Введенный в R2021a