Настройки импорта объект для XML- Файлы
Система координат XMLImportOptions
позволяет вам задать, как MATLAB® импортирует структурированные табличные данные из XML- файлов. Объект содержит свойства, которые управляют процессом импорта данных, включая обработку ошибок и недостающих данных.
Можно создать XMLImportOptions
объект, использующий либо xmlImportOptions
функцию (описанную здесь) или detectImportOptions
функция:
Использование xmlImportOptions
для определения свойств импорта на основе ваших требований к импорту.
Использование detectImportOptions
обнаружение и заполнение свойств импорта на основе содержимого XML- файла, заданного в filename
.
opts = detectImportOptions(filename)
opts = xmlImportOptions
создает XMLImportOptions
объект с одной переменной.
opts = xmlImportOptions('NumVariables',
создает объект с количеством переменных, заданным в numVars
)numVars
.
numVars
- Количество переменныхКоличество переменных, заданное как положительное скалярное целое число.
VariableNames
- Имена переменныхИмена переменных, заданные как массив ячеек из векторов символов или строковых массивов. The VariableNames
свойство содержит имена, используемые при импорте переменных.
Если данные содержат N
переменные, но имена переменных не заданы, затем VariableNames
свойство содержит {'Var1','Var2',...,'VarN'}
.
Чтобы поддержать недопустимые идентификаторы MATLAB в качестве имен переменных, таких как имена переменных, содержащие пространства и символы, отличные от ASCII, задайте значение VariableNamingRule
на 'preserve'
.
Пример: opts.VariableNames
возвращает текущие (обнаруженные) имена переменных.
Пример: opts.VariableNames(3) = {'Height'}
изменяет имя третьей переменной на Height
.
Типы данных: char
| string
| cell
VariableNamingRule
- Флаг для сохранения имен переменных'modify'
(по умолчанию) | 'preserve'
Флаг для сохранения имен переменных, заданный как разделенная разделенными запятой парами, состоящая из VariableNamingRule
и любой из них 'modify'
или 'preserve'
.
'modify'
- Преобразуйте недопустимые имена переменных (как определено isvarname
function) для действительных идентификаторов MATLAB.
'preserve'
- Сохраните имена переменных, которые не являются допустимыми идентификаторами MATLAB, такими как имена переменных, которые включают пространства и символы, отличные от ASCII.
Начиная с R2019b, имена переменных и имена строк могут включать любые символы, включая пространства и символы, отличные от ASCII. Кроме того, они могут начинаться с любых символов, а не только букв. Переменная и имена строк не должны быть допустимыми идентификаторами MATLAB (как определяется isvarname
функция). Чтобы сохранить эти имена переменных и имена строк, задайте значение VariableNamingRule
на 'preserve'
.
Типы данных: char
| string
VariableTypes
- Типы данных переменнойТип данных переменной, заданный как массив ячеек из векторов символов или строковые массивы, содержащий набор допустимых имен типов данных. The VariableTypes
свойство определяет типы данных, которые будут использоваться при импорте переменных.
Как обновить VariableTypes
свойство, используйте setvartype
функция.
Пример: opts.VariableTypes
возвращает текущие типы данных переменных.
Пример: opts = setvartype(opts,'Height',{'double'})
изменяет тип данных переменной Height
на double
.
SelectedVariableNames
- Подмножество переменных для импортаПодмножество переменных для импорта, заданное как вектор символов, строковый скаляр, массив ячеек векторов символов, строковые массивы или массив числовых индексов.
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
VariableOptions
- Введите конкретные настройки импорта переменныхВведите конкретные настройки импорта переменных, возвращенные как массив объектов настроек импорта переменных. Массив содержит объект, соответствующий каждой переменной, заданной в VariableNames
свойство. Каждый объект в массиве содержит свойства, поддерживающие импорт данных с определенным типом данных.
Опции переменной поддерживают следующие типы данных: число, текст, logical
, datetime
, или categorical
.
Чтобы запросить текущие (или обнаруженные) опции для переменной, используйте getvaropts
функция.
Чтобы задать и настроить опции для переменной, используйте setvaropts
функция.
Пример: opts.VariableOptions
возвращает набор VariableImportOptions
объекты, по одному, соответствующий каждой переменной в данных.
Пример: getvaropts(opts,'Height')
возвращает VariableImportOptions
объект для Height
переменная.
Пример: opts = setvaropts(opts,'Height','FillValue',0)
устанавливает FillValue
свойство для переменной Height
на 0
.
VariableDescriptionsSelector
- Описание переменной XPath выражениеОписание переменной XPath выражение, заданное как вектор символов или строковый скаляр, который читается функцией чтения, используется для выбора описаний табличных переменных. Вы должны задать VariableDescriptionsSelector
как допустимое выражение XPath версии 1.0.
Пример: 'VariableDescriptionsSelector','/RootNode/ChildNode'
VariableSelectors
- Табличная переменная XPath выраженияТабличная переменная XPath выражения, заданные как массив ячеек из векторов символов или строковых массивов, который функция чтения использует для выбора табличных переменных. Вы должны задать VariableSelectors
как допустимые выражения XPath версии 1.0.
Пример: 'VariableSelectors',{'/RootNode/ChildNode'}
Пример: 'VariableSelectors',"/RootNode/ChildNode"
Пример: 'VariableSelectors',["/RootNode/ChildNode1","/RootNode/ChildNode2"]
VariableUnitsSelector
- Выражение XPath переменных модулейПеременные модули XPath, заданные как вектор символов или строковый скаляр, который функция чтения использует для выбора переменных модулей табличной переменной. Вы должны задать VariableUnitsSelector
как допустимое выражение XPath версии 1.0.
Пример: 'VariableUnitsSelector','/RootNode/ChildNode'
RowNamesSelector
- Имена строк таблицы XPath выражениеСтрока таблицы называет выражение XPath, заданное в виде вектора символов или строкового скаляра, который функция чтения использует для выбора имен строк таблицы. Вы должны задать RowNamesSelector
как допустимое выражение XPath версии 1.0.
Пример: 'RowNamesSelector','/RootNode/ChildNode'
RowSelector
- Выражение строки XPath таблицыВыражение строки таблицы XPath, заданное как вектор символов или строковый скаляр, который функция чтения использует для выбора отдельных строк выхода таблицы. Вы должны задать RowSelector
как допустимое выражение XPath версии 1.0.
Пример: 'RowSelector','/RootNode/ChildNode'
TableSelector
- Табличные данные XPath выражениеТабличные данные XPath выражение, заданное как вектор символов или строковый скаляр, который функция чтения использует для выбора выхода данных таблицы. Вы должны задать TableSelector
как допустимое выражение XPath версии 1.0.
Пример: 'TableSelector','/RootNode/ChildNode'
RegisteredNamespaces
- Набор зарегистрированных префиксов пространства имен XMLНабор зарегистрированных префиксов пространства имен 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'
(по умолчанию) | 'error'
| 'omitrow'
| 'omitvar'
Процедура управления отсутствующими данными, заданная в качестве одного из значений в этой таблице.
Отсутствующее правило | Поведение |
---|---|
'fill' | Замените отсутствующие данные на содержимое The |
'error' | Остановите импорт и отобразите сообщение об ошибке, показывающее отсутствующие запись и поле. |
'omitrow' | Опускать строки, которые содержат отсутствующие данные. |
'omitvar' | Опускайте переменные, которые содержат отсутствующие данные. |
Пример: opts.MissingRule = 'omitrow';
Типы данных: char
| string
ImportErrorRule
- Процедура обработки ошибок импорта'fill'
(по умолчанию) | 'error'
| 'omitrow'
| 'omitvar'
Процедура обработки ошибок импорта, заданная как одно из значений в этой таблице.
Правило импорта ошибок | Поведение |
---|---|
'fill' | Замените данные, в которых произошла ошибка, содержимым The |
'error' | Остановите импорт и отобразите сообщение об ошибке, показывающее запись и поле, вызывающие ошибку. |
'omitrow' | Опускать строки, в которых происходят ошибки. |
'omitvar' | Опускайте переменные, где происходят ошибки. |
Пример: opts.ImportErrorRule = 'omitvar';
Типы данных: char
| string
RepeatedNodeRule
- Процедура обработки повторяющихся XML-узлов'addcol'
(по умолчанию) | 'ignore'
| 'error'
Процедура обработки повторяющихся XML- узлы в заданной строке таблицы, заданная как 'addcol'
, 'ignore'
, или 'error'
.
Повторное правило узла | Поведение |
---|---|
'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
.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.