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]
    
    

    Запросите Инструментальную структуру в 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"
    
    

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

    свернуть все

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

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

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

    Форма

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

    Задайте имя файла в filename.

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

    Файл в папке

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

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

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

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

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

    scheme_name://path_to_file/my_file.ext

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

    Удаленное местоположениеscheme_name
    Amazon S3™s3
    Устройство хранения данных Windows Azure® Blobwasb, 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' должно быть допустимое выражение версии 1.0 XPath.

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

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

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

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

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

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

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

    свернуть все

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

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

    Введенный в R2020b