readstruct

Создайте структуру из файла

    Описание

    пример

    S = readstruct(filename) создает структуру путем считывания структурированных данных из файла. Входной файл должен содержать хорошо сформированную XML-структуру.

    readstruct автоматически обнаруживает типы данных содержимого в файле входов.

    пример

    S = readstruct(filename,Name,Value) создает структуру из файла с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Для примера можно считать содержимое файла входа как XML при расширении файла в filename не .xml по вызову S = readstruct(filename,'FileType','xml').

    Примеры

    свернуть все

    Чтение XML- файла как структуры, создание переменных из структуры и запрос ее содержимого.

    Файл music.xml имеет следующую структуру.

    Чтение music.xml в MATLAB как структуру S. Эта структура содержит один родительский узел MusicalEnsemble который имеет два одноуровневых узла, Ensemble и Musicians.

    S = readstruct("music.xml")
    S = struct with fields:
         Ensemble: [1x1 struct]
        Musicians: [1x1 struct]
    
    

    Создайте переменную band от первого одноуровневого узла. band имеет три поля, одно из которых является структурой с именем Instrumentation.

    band = S.Ensemble
    band = struct with fields:
                  Music: "Jazz"
               BandName: "Kool Katz"
        Instrumentation: [1x1 struct]
    
    

    Запрос- Instrumentation в band для просмотра его содержимого.

    band.Instrumentation
    ans = struct with fields:
        Instrument: [1x4 struct]
    
    

    Создайте переменную musicians от второго одноуровневого узла. musicians имеет одно поле, называемое Name, которая содержит пять структур.

    musicians = S.Musicians
    musicians = struct with fields:
        Name: [1x5 struct]
    
    

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

    Если одноуровневый узел содержит поля, которых нет у других одноуровневых узлов, readstruct возвращает missing для полей, которые не найдены в других узлах. Для примера в файл music.xml, второй Instrument узел содержит непустое поле pianotype. Начиная с другого Instrument узлы не имеют значения, заданного для pianotype, readstruct возвращает missing для pianotype в соответствии с этими Instrument узлы.

    Чтение XML- файл music.xml в структуру S.

    S = readstruct("music.xml")
    S = struct with fields:
         Ensemble: [1x1 struct]
        Musicians: [1x1 struct]
    
    

    Запросите структуру Instrument в S, чтобы просмотреть ее содержимое.

    S.Ensemble.Instrumentation.Instrument
    ans=1×4 struct array with fields:
        typeAttribute
        Text
        pianotype
        drumkit
        basstype
    
    

    Чтение текстового файла как структуры.

    Файл music.txt имеет следующую структуру.

    Чтение текстового файла music.txt в MATLAB как структуру S. Задайте 'FileType' как 'xml' чтобы считать содержимое входа XML- файл.

    S = readstruct("music.txt","FileType","xml")
    S = struct with fields:
         Ensemble: [1x1 struct]
        Musicians: [1x1 struct]
    
    

    Создайте структуру из определенного узла элемента в файле входа с помощью 'StructNodeName' Пара "имя-значение".

    Чтение Instrumentation узел из файла XML music.xml.

    S = readstruct("music.xml","StructNodeName","Instrumentation")
    S = struct with fields:
        Instrument: [1x4 struct]
    
    

    Укажите точный узел элемента XML, под которым можно начать чтение структуры в вход файле.

    Ознакомьтесь с пятым Name элемент в файле XML music.xml. Задайте полное выражение XPath узла элемента как значение 'StructSelector'.

    S = readstruct("music.xml","StructSelector","/MusicalEnsemble/Musicians/Name[5]")
    S = struct with fields:
        roleAttribute: "bassist"
                 Text: "John"
    
    

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

    Чтение второго Street узел элемента как структура, задайте значение 'StructSelector' как '//Student[2]/Address/myPrefix:Street' и значение RegisteredNamespaces как ["myPrefix","https://www.mathworks.com"].

    S = readstruct("students.xml","RegisteredNamespaces",["myPrefix","https://www.mathworks.com"],...
        "StructSelector",'//Student[2]/Address/myPrefix:Street')
    S = struct with fields:
        xmlnsAttribute: "https://www.mathworks.com"
                  Text: "4641 Pearl Street"
    
    

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

    свернуть все

    Имя считываемого файла, заданное как вектор символов или строковый скаляр.

    В зависимости от местоположения вашего файла, filename может принять одну из этих форм.

    Местоположение

    Форма

    Текущая папка или папка на MATLAB® путь

    Укажите имя файла в filename.

    Пример: 'myFile.xml'

    Файл в папке

    Если файл находится не в текущей папке или в папке на пути MATLAB, задайте полное или относительное имя пути в filename.

    Пример: 'C:\myFolder\myFile.xml'

    Пример: 'dataDir\myFile.xml'

    URL-адрес Интернета

    Если файл задан как однородный интернет-локатор ресурсов (URL), то filename должен содержать тип протокола 'http://' или 'https://'.

    Пример: 'http://hostname/path_to_file/my_data.xml'

    Удаленное местоположение

    Если файл хранится в удаленном местоположении, то filename должен содержать полный путь к файлу, указанному в форме:

    scheme_name://path_to_file/ my_file.ext

    Исходя из удаленного местоположения, scheme_name может быть одним из значений в этой таблице.

    Удаленное местоположениеscheme_name
    Амазонки S3™s3
    Windows Azure® Хранилище больших двоичных объектовwasb, wasbs
    HDFS™hdfs

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

    Пример: 's3://bucketname/path_to_file/my_setup.xml'

    Аргументы в виде пар имя-значение

    Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

    Пример: 'ImportAttributes',true задает импорт атрибутов, связанных с узлами элемента, как полей структуру output.

    Тип файла, заданный как разделенная разделенными запятой парами, состоящая из 'FileType' и одно из следующих значений:

    • 'auto' - Автоматически определите формат файла входного файла из расширения, заданного в filename.

    • 'xml' - Считайте содержимое входного файла как XML.

    Если расширение файла в filename не .xml, можно задать значение 'FileType' как 'xml' чтобы считать содержимое входного файла XML.

    Пример: 'FileType','xml'

    Стартовый элемент XML, заданный как разделенная разделенными запятой парами, состоящая из 'StructNodeName' и вектор символов или строковый скаляр readstruct считывает структуру в файле входа, начиная с заданного элемента XML. Если вы не задаете StructNodeName, затем readstruct считывает структуру, начиная с корня XML- файла.

    readstruct соответствует первому узлу в XML-документе, имя которого совпадает со значением, заданным в StructNodeName.

    Пример: 'StructNodeName','RootName'

    Запуск XML- Путь, заданный как разделенная запятой пара, состоящий из 'StructSelector' и вектор символов или строковый скаляр readstruct считывает структуру в файле входа, начиная с элемента по заданному пути. Значение 'StructSelctor' должно быть допустимым выражением XPath версии 1.0.

    Атрибуты импорта, заданные как разделенная разделенными запятой парами, состоящая из 'ImportAttributes' и любой из них 1 (true) или 0 (false). Если вы задаете значение следующим false, затем readstruct не будет импортировать XML-атрибуты в файл входа как поля в структуру output.

    Пример: 'ImportAttributes',false

    Суффикс атрибута, заданный как разделенная разделенными запятой парами, состоящая из 'AttributeSuffix' и либо вектор символов, либо строковый скаляр. readstruct добавляет этот суффикс ко всем именам полей структуры output, которые соответствуют атрибутам в вход XML- файлу. Если вы не задаете 'AttributeSuffix', затем readstruct по умолчанию используется для добавления суффикса 'Attribute' ко всем именам полей, соответствующим атрибутам в вход XML- файл.

    Пример: 'AttributeSuffix','_att'

    Набор зарегистрированных префиксов пространства имен 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”]

    Выходные аргументы

    свернуть все

    Структура output. Структура является типом данных, который группирует связанные данные с помощью контейнеров данных, называемых полями. Каждое поле может содержать данные любого типа. Доступ к данным в структуре с помощью записи через точку формы structName.fieldName. Для получения дополнительной информации о структурах см. struct.

    Совет

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

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

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

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

    См. также

    Введенный в R2020b