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) задает дополнительные свойства для XMLImportOptions объект с помощью одних или нескольких аргументов name-value.

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

развернуть все

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

Свойства

развернуть все

Variable Properties

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

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

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

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

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

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

Отметьте, чтобы сохранить имена переменных в виде любого "modify" или "preserve".

  • "modify" — Преобразуйте недопустимые имена переменных (как определено isvarname функция) к допустимым идентификаторам MATLAB.

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

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

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

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

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

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

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

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

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

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

Чтобы поддержать недопустимые идентификаторы MATLAB как, имена переменных, такие как имена переменных, содержащие пробелы и символы non-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 свойство. Каждый объект в массиве содержит свойства, которые поддерживают импорт данных с определенным типом данных.

Параметры переменной поддерживают эти типы данных: числовой, текст, logicaldatetime, или categorical.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример: '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"]

Заменяющие правила

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

MissingRule Поведение
'fill'

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

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

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

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

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

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

ImportErrorRule Поведение
'fill'

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

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, чтобы задать который элементы документа входа XML импорту. Например, предположите, что вы хотите импортировать XML-файл myFile.xml, который имеет следующую структуру:

    <data>
        <table category="ones">
            <var>1</var>
            <var>2</var>
        </table>
        <table category="tens">
            <var>10</var>
            <var>20</var>
        </table>
    </data>
    
    Эта таблица обеспечивает синтаксисы XPath, которые поддерживаются для аргументов name-value селектора XPath, таких как VariableSelectors или TableSelector.

    Операция выбораСинтаксисПримерРезультат
    Выберите каждый узел, имя которого совпадает с узлом, который вы хотите выбрать, независимо от его местоположения в документе.Снабдите префиксом имя две наклонных черты вправо (//).
    data = readtable('myFile.xml', 'VariableSelectors', '//var')
    data =
    
      4×1 table
    
        var
        ___
    
         1 
         2 
        10 
        20 
    Считайте значение атрибута, принадлежащего узлу элемента.Снабдите префиксом атрибут знак at sign (@).
    data = readtable('myFile.xml', 'VariableSelectors', '//table/@category')
    data =
    
      2×1 table
    
        categoryAttribute
        _________________
    
             "ones"      
             "tens"   
    Выберите определенный узел в наборе узлов.Обеспечьте индекс узла, который вы хотите выбрать в квадратных скобках ([]).
    data = readtable('myFile.xml', 'TableSelector', '//table[1]')
    data =
    
      2×1 table
    
        var
        ___
    
         1 
         2 
    
    Задайте приоритет операций.Добавьте круглые скобки вокруг выражения, которое вы хотите выполнить сначала.
    data = readtable('myFile.xml', 'VariableSelectors', '//table/var[1]')
    data =
    
      2×1 table
    
        var
        ___
    
         1 
        10 
    data = readtable('myFile.xml', 'VariableSelectors', '(//table/var)[1]')
    data =
    
      table
    
        var
        ___
    
         1 

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

| |

Введенный в R2021a