readstruct
説明
は、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、S
= readstruct(filename
,Name,Value
)filename
のファイル拡張子が .xml
でないときに、S = readstruct(filename,FileType="xml")
を呼び出すことによって、入力ファイルの内容を XML として読み取ることができます。
例
XML ファイルから構造体を作成
XML ファイルの内容を構造体としてインポートし、構造体から変数を作成し、その内容をクエリします。
ファイル music.xml
の内容を表示します。
type music.xml
<MusicalEnsemble> <Ensemble> <Music>Jazz</Music> <BandName>Kool Katz</BandName> <Instrumentation> <Instrument type="wind">Trumpet </Instrument> <Instrument type="percussion">Piano <pianotype>concert grand</pianotype> </Instrument> <Instrument type="percussion">Drums <drumkit>Bass drum</drumkit> <drumkit>Floor tom</drumkit> <drumkit>Snare drum</drumkit> <drumkit>Hi-hat</drumkit> <drumkit>Ride cymbal</drumkit> </Instrument> <Instrument type="string">Bass <basstype>upright</basstype> </Instrument> </Instrumentation> </Ensemble> <Musicians> <Name role="trumpeter">Miles</Name> <Name role="vocalist">Roger</Name> <Name role="pianist">Diana</Name> <Name role="drummer">George</Name> <Name role="bassist">John</Name> </Musicians> </MusicalEnsemble>
music.xml
を構造体として MATLAB® にインポートします。この構造体には、MusicalEnsemble
という名前の 1 つの親ノードがあり、その親ノードは 2 つの兄弟ノード Ensemble
と Musicians
をもちます。
S = readstruct("music.xml")
S = struct with fields:
Ensemble: [1x1 struct]
Musicians: [1x1 struct]
1 つ目の兄弟ノードから変数 band
を作成します。band
には 3 つのフィールドがあり、その 1 つは、Instrumentation
という名前の構造体です。
band = S.Ensemble
band = struct with fields:
Music: "Jazz"
BandName: "Kool Katz"
Instrumentation: [1x1 struct]
band
の Instrumentation
をクエリし、その内容を表示します。
ins = band.Instrumentation
ins = struct with fields:
Instrument: [1x4 struct]
2 つ目の兄弟ノードから変数 musicians
を作成します。musicians
は、Name
という名前の 1 つのフィールドをもち、その中に 5 つの構造体が含まれます。
musicians = S.Musicians
musicians = struct with fields:
Name: [1x5 struct]
テキスト ファイルから構造体を作成
テキスト ファイルの内容を構造体としてインポートします。
ファイル music.info
の内容を表示します。
type music.info
<MusicalEnsemble> <Ensemble> <Music>Jazz</Music> <BandName>Kool Katz</BandName> <Instrumentation> <Instrument type="wind">Trumpet </Instrument> <Instrument type="percussion">Piano <pianotype>concert grand</pianotype> </Instrument> <Instrument type="percussion">Drums <drumkit>Bass drum</drumkit> <drumkit>Floor tom</drumkit> <drumkit>Snare drum</drumkit> <drumkit>Hi-hat</drumkit> <drumkit>Ride cymbal</drumkit> </Instrument> <Instrument type="string">Bass <basstype>upright</basstype> </Instrument> </Instrumentation> </Ensemble> <Musicians> <Name role="trumpeter">Miles</Name> <Name role="vocalist">Roger</Name> <Name role="pianist">Diana</Name> <Name role="drummer">George</Name> <Name role="bassist">John</Name> </Musicians> </MusicalEnsemble>
music.info
を構造体として MATLAB にインポートします。名前と値の引数 FileType
を "xml"
として指定して、内容を XML ファイルとして読み取ります。
S = readstruct("music.info",FileType="xml")
S = struct with fields:
Ensemble: [1x1 struct]
Musicians: [1x1 struct]
JSON ファイルからの構造体の作成
R2023b 以降
JSON ファイルの内容を構造体としてインポートし、構造体から変数を作成し、その内容をクエリします。
ファイル music.json
の内容を表示します。
type music.json
{ "Ensemble": { "Music": "jazz", "BandName": "Kool Katz", "Instrumentation": [ { "Type": "wind", "Instrument": "trumpet", }, { "Type": "percussion", "Instrument": "piano", "Pianotype": "concert grand", }, { "Type": "percussion", "Instrument": "drums", "Drumkit": [ "bass drum", "floor tom", "snare drum", "hi-hat", "ride cymbal" ], }, { "Type": "string", "Instrument": "bass", "Basstype": "upright" } ] }, "Musicians": [ { "Role": "trumpeter", "Name": "Miles" }, { "Role": "vocalist", "Name": "Roger" }, { "Role": "pianist", "Name": "Diana" }, { "Role": "drummer", "Name": "George" }, { "Role": "bassist", "Name": "John" } ] }
music.json
を構造体として MATLAB にインポートします。この構造体には、Ensemble
および Musicians
という名前の 2 つの兄弟ノードが含まれています。
S = readstruct("music.json")
S = struct with fields:
Ensemble: [1x1 struct]
Musicians: [1x5 struct]
1 つ目の兄弟ノードから変数 band
を作成します。band
には 3 つのフィールドがあり、その 1 つは、Instrumentation
という名前の構造体配列です。
band = S.Ensemble
band = struct with fields:
Music: "jazz"
BandName: "Kool Katz"
Instrumentation: [1x4 struct]
band
の Instrumentation
をクエリし、その内容を表示します。
ins = band.Instrumentation
ins=1×4 struct array with fields:
Type
Instrument
Pianotype
Drumkit
Basstype
2 つ目の兄弟ノードから変数 musicians
を作成します。
musicians = S.Musicians
musicians=1×5 struct array with fields:
Role
Name
不均一な構造の要素に関する情報の取得
一様に構造化されたデータを含まないファイルから構造体を作成し、その内容を表示します。
ある兄弟ノードに、他の兄弟ノードには存在しないフィールドがある場合、readstruct
は、他のノードで見つからないフィールドに対して missing
を返します。たとえば、ファイル music.json
で、Instrumentation
の 2 つ目のノードには、Pianotype
という名前の空でないフィールドが含まれます。兄弟ノードは Pianotype
に指定された値をもたないため、readstruct
は、それらのノード下の Pianotype
に対して missing
を返します。
type music.json
{ "Ensemble": { "Music": "jazz", "BandName": "Kool Katz", "Instrumentation": [ { "Type": "wind", "Instrument": "trumpet", }, { "Type": "percussion", "Instrument": "piano", "Pianotype": "concert grand", }, { "Type": "percussion", "Instrument": "drums", "Drumkit": [ "bass drum", "floor tom", "snare drum", "hi-hat", "ride cymbal" ], }, { "Type": "string", "Instrument": "bass", "Basstype": "upright" } ] }, "Musicians": [ { "Role": "trumpeter", "Name": "Miles" }, { "Role": "vocalist", "Name": "Roger" }, { "Role": "pianist", "Name": "Diana" }, { "Role": "drummer", "Name": "George" }, { "Role": "bassist", "Name": "John" } ] }
music.json
を構造体としてインポートします。
S = readstruct("music.json")
S = struct with fields:
Ensemble: [1x1 struct]
Musicians: [1x5 struct]
S
で Pianotype
構造体をクエリし、その内容を変数に代入します。
[ins1,ins2,ins3,ins4] = S.Ensemble.Instrumentation.Pianotype
ins1 = missing
<missing>
ins2 = "concert grand"
ins3 = missing
<missing>
ins4 = missing
<missing>
カスタムの XML 名前空間接頭辞の登録
名前と値の引数 RegisteredNamespaces
を使用して、入力ファイルの既存の名前空間 URL にカスタムの XML 名前空間接頭辞を登録します。
students.xml
ファイルの 2 つ目の 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"
選択した JSON 標準でのデータの解析
R2023b 以降
JSON 標準に厳格に準拠するが、解析時に末尾のコンマを許可して、JSON ファイルから構造体を作成します。
S = readstruct("music.json",ParsingMode="strict",AllowTrailingCommas=true)
S = struct with fields:
Ensemble: [1x1 struct]
Musicians: [1x5 struct]
入力引数
filename
— 読み取るファイルの名前
string スカラー | 文字ベクトル
読み取るファイルの名前。string スカラーまたは文字ベクトルとして指定します。ファイル タイプは、ファイル拡張子または名前と値の引数 FileType
によって判別されます。拡張子が .xml
または .json
のファイルはそれぞれ XML または JSON (R2023b 以降) ファイルとして解釈されます。一方、その他のファイル拡張子の場合は、名前と値の引数 FileType
を指定する必要があります。
ファイルの場所に応じて、filename
は次の形式のいずれかをとります。
場所 | 形式 | ||||||||
---|---|---|---|---|---|---|---|---|---|
現在のフォルダー、または MATLAB® パス上のフォルダー | ファイル名を 例: 例: | ||||||||
フォルダー内のファイル | ファイルが現在のフォルダーまたは MATLAB パス上のフォルダーにない場合は、 例: 例: 例: 例: | ||||||||
インターネット URL | ファイルをインターネットの Uniform Resource Locator (URL) として指定する場合、 例: 例: | ||||||||
リモートの場所 | リモートの場所に保存されたファイルの場合、
リモートの場所に基づいて、
詳細については、リモート データの操作を参照してください。 例: 例: |
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
例: readstruct("myfile.xml",DateLocale="en_US")
は日付に en-US ロケールを使用して myfile.xml
からデータをインポートします。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: readstruct("myfile.xml","DateLocale","en_US")
は日付に en-US ロケールを使用して myfile.xml
からデータをインポートします。
FileType
— ファイルの種類
"xml"
| "json"
ファイルのタイプ。次の値のいずれかとして指定します。
"xml"
—filename
で指定されているファイル拡張子に関係なく、入力ファイルの内容を XML として読み取ります。"json"
—filename
で指定されているファイル拡張子に関係なく、入力ファイルの内容を JSON として読み取ります。 (R2023b 以降)
.xml
でも .json
でもないファイル拡張子を filename
で指定した場合、FileType
を "xml"
または "json"
として指定して、入力ファイルの内容をそれぞれ XML または JSON として読み取ることができます。
例: FileType="xml"
DateLocale
— 日付を読み取るロケール
string スカラー | 文字ベクトル
日付を読み取るロケール。形式
の string スカラーまたは文字ベクトルとして指定します。xx
_YY
xx
は言語を表す小文字 2 文字の ISO 639-1 コードYY
は国を表す大文字の ISO 3166-1 alpha-2 コード
次の表に一般的なロケールの値を示します。
ロケール | 言語 | 国 |
---|---|---|
"de_DE" | ドイツ語 | ドイツ |
"en_GB" | 英語 | 英国 |
"en_US" | 英語 | 米国 |
"es_ES" | スペイン語 | スペイン |
"fr_FR" | フランス語 | フランス |
"it_IT" | イタリア語 | イタリア |
"ja_JP" | 日本語 | 日本 |
"ko_KR" | 韓国語 | 韓国 |
"nl_NL" | オランダ語 | オランダ |
"zh_CN" | 簡体字中国語 | 中国 |
例: DateLocale="ja_JP"
StructNodeName
— 開始要素の名前
string スカラー | 文字ベクトル
開始要素の名前。string スカラーまたは文字ベクトルとして指定します。読み取り始める位置を決定するために、readstruct
は、StructNodeName
で指定した値に一致する名前をもつ最初のノードをファイル内で検索します。readstruct
は入力ファイルの内容をそのノードから読み取り始めます。StructNodeName
を指定しなかった場合、readstruct
は内容の読み取りをファイルのルートから開始します。
例: StructNodeName="RootName"
例: StructNodeName="Instrumentation"
StructSelector
— 開始 XML パスまたは JSON ポインター
string スカラー | 文字ベクトル
開始 XML パスまたは JSON ポインター。string スカラーまたは文字ベクトルとして指定します。readstruct
は、入力ファイルの内容の読み取りを、指定した XML パスまたは JSON ポインターの要素から開始します。
XML ファイルの場合、StructSelector
の値は、有効な XPath Version 1.0 の式でなければなりません。XML パスは以下の構文を使用して指定できます。
XML 選択操作 | 構文 | 例 |
---|---|---|
文書内の位置に関係なく、名前でノードを選択する。 | 名前の前にスラッシュを 2 つ (// ) 付ける。 | S = readstruct("music.xml",StructSelector="//Ensemble") |
一連のノードから特定のノードをインデックスで選択する。 | ノードのインデックスを大かっこ ([] ) で囲んで指定する。 | S = readstruct("music.xml", ... StructSelector= ... "//Ensemble/Instrumentation/Instrument[3]") |
演算の優先順位を指定する。 | 最初に評価する式を小かっこで囲む。 | S = readstruct("students.xml", ... StructSelector="//Student/Name[4]") |
S = readstruct("students.xml", ... StructSelector="(//Student/Name)[4]") |
JSON ポインターは以下の構文を使用して指定できます。
JSON 選択操作 | 構文 | 例 |
---|---|---|
名前で JSON オブジェクト キーを選択する。 | 名前の前にスラッシュを 1 つ (/ ) 付ける。 | S = readstruct("music.json",StructSelector="/Musicians") |
JSON 配列要素をインデックスで選択する。 | スラッシュ 1 つ (/ ) の後にノードのインデックスを指定する。このインデックスは 0 ベース。 | S = readstruct("music.json", ... StructSelector="/Musicians/4") |
WebOptions
— HTTP
または HTTPS
要求オプション
weboptions
オブジェクト
HTTP
または HTTPS
要求オプション。weboptions
オブジェクトとして指定します。weboptions
オブジェクトは、指定した filename
がプロトコル タイプ "http://"
または "https://"
を含むインターネット URL である場合にデータをインポートする方式を決定します。
ImportAttributes
— 属性のインポート
true
または 1
(既定値) | false
または 0
属性のインポート。数値または logical 1
(true
) または 0
(false
) として指定します。値を false
に指定すると、readstruct
は入力ファイル内の XML 属性を出力構造体のフィールドとしてインポートしません。
例: ImportAttributes=false
AttributeSuffix
— 属性接尾辞
"Attribute"
(既定値) | string スカラー | 文字ベクトル
属性接尾辞。string スカラーまたは文字ベクトルとして指定します。readstruct
は、この接尾辞を入力 XML ファイルに含まれる属性に対応する出力構造体のすべてのフィールド名に付加します。AttributeSuffix
を指定しない場合、readstruct
は既定で接尾辞 "Attribute"
を入力 XML ファイルに含まれる属性に対応するすべてのフィールド名に付加します。
例: AttributeSuffix="_att"
RegisteredNamespaces
— 登録済みの XML 名前空間接頭辞のセット
string 行列
登録済みの XML 名前空間接頭辞のセット。接頭辞の string 行列として指定します。読み取り関数は、XML ファイルの XPath 式を評価する際にこれらの接頭辞を使用します。名前空間接頭辞とそれに関連付けられた URL を N
行 2 列の string 行列として指定します。ここで、N
は名前空間接頭辞と URL のペアの数です。RegisteredNamespaces
は、readstruct
の StructSelector
や readtable
と readtimetable
の VariableSelectors
など、セレクターの名前と値の引数で指定された XPath 式も評価する場合に使用できます。
既定では、読み取り関数は XPath の評価に使用する名前空間接頭辞を自動的に検出して登録しますが、名前と値の引数 RegisteredNamespaces
を使用して新しい名前空間接頭辞を登録することもできます。新しい名前空間接頭辞の登録は、名前空間 URL がある XML ノードについて、XML ファイルで名前空間接頭辞が宣言されていない場合などに便利です。
たとえば、名前空間接頭辞が含まれていない example.xml
という名前の XML ファイルの XPath 式を評価するとします。RegisteredNamespaces
を ["myprefix","https://www.mathworks.com"]
と指定して、接頭辞 "myprefix"
を URL https://www.mathworks.com
に割り当てます。
S = readstruct("example.xml",StructSelector="/myprefix:Data", ... RegisteredNamespaces=["myprefix","https://www.mathworks.com"])
例: RegisteredNamespaces=["myprefix","https://www.mathworks.com"]
ParsingMode
— 解析時に JSON 標準にどれだけ厳格に準拠するか
"lenient"
(既定値) | "strict"
R2023b 以降
解析時に JSON 標準にどれだけ厳格に準拠するか。次の値のいずれかとして指定します。
"lenient"
(既定の設定) –AllowComments
、AllowInfAndNaN
、およびAllowTrailingCommas
の値がtrue
に設定されます。"strict"
–AllowComments
、AllowInfAndNaN
、およびAllowTrailingCommas
の値がfalse
に設定されます。
AllowComments
— コメントの許可
true
または 1
(既定の設定) | false
または 0
R2023b 以降
入力ファイルでコメントを許可するかどうか。次のいずれかの値として指定します。
数値または logical
1
(true
) (既定の設定) – インポート時にコメントはエラーになりません。ファイル内のコメントはデータとみなされず、MATLAB に読み取られません。コメントは、単一行のコメントの場合は「//」で開始できます。複数行のコメントの場合は、「/*」で開始し、「*/」で終了することができます。数値または logical
0
(false
) – インポート時にコメントはエラーになります。
AllowInfAndNaN
— Inf
および NaN
リテラルの読み取り
true
または 1
(既定の設定) | false
または 0
R2023b 以降
入力ファイル内の Inf
および NaN
リテラルを読み取るかどうか。次のいずれかの値として指定します。
数値または logical
1
(true
) (既定の設定) –Inf
およびNaN
リテラル (Infinity
、-Inf
、-Infinity
を含む) は MATLAB に読み取られます。数値または logical
0
(false
) – インポート時にInf
およびNaN
リテラルはエラーになります。
AllowTrailingCommas
— 末尾のコンマの読み取り
true
または 1
(既定の設定) | false
または 0
R2023b 以降
入力ファイル内の末尾のコンマを読み取るかどうか。次のいずれかの値として指定します。
数値または logical
1
(true
) (既定の設定) – インポート時に JSON 配列または JSON オブジェクトの後の末尾のコンマはエラーになりません。数値または logical
0
(false
) – インポート時に末尾のコンマはエラーになります。
出力引数
拡張機能
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
使用上の注意事項および制限事項:
readstruct
は、XML ファイルではスレッドベースのワークフローのみをサポートしています。
バージョン履歴
R2020b で導入R2023b: JSON ファイルからのデータの読み取り
JSON ファイルの内容を MATLAB に構造体としてインポートできます。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)