このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
readstruct
ファイルから構造体配列を作成する
説明
は、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、S
= readstruct(filename
,Name,Value
)filename
のファイル拡張子が .xml
でないときに、S = readstruct(filename,FileType="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]
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>
名前と値の引数 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"
R2023b 以降
JSON 標準に厳格に準拠するが、解析時に末尾のコンマを許可して、JSON ファイルから構造体を作成します。
S = readstruct("music.json",ParsingMode="strict",AllowTrailingCommas=true)
S = struct with fields:
Ensemble: [1x1 struct]
Musicians: [1x5 struct]
入力引数
読み取るファイルの名前。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
からデータをインポートします。
ファイル情報
ファイルのタイプ。次の値のいずれかとして指定します。
"xml"
—filename
で指定されているファイル拡張子に関係なく、入力ファイルの内容を XML として読み取ります。"json"
—filename
で指定されているファイル拡張子に関係なく、入力ファイルの内容を JSON として読み取ります。 (R2023b 以降)
.xml
でも .json
でもないファイル拡張子を filename
で指定した場合、FileType
を "xml"
または "json"
として指定して、入力ファイルの内容をそれぞれ XML または JSON として読み取ることができます。
例: FileType="xml"
日付を読み取るロケール。形式
の 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"
開始要素の名前。string スカラーまたは文字ベクトルとして指定します。読み取り始める位置を決定するために、readstruct
は、StructNodeName
で指定した値に一致する名前をもつ最初のノードをファイル内で検索します。readstruct
は入力ファイルの内容をそのノードから読み取り始めます。StructNodeName
を指定しなかった場合、readstruct
は内容の読み取りをファイルのルートから開始します。
例: StructNodeName="RootName"
例: StructNodeName="Instrumentation"
開始 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") |
HTTP
または HTTPS
要求オプション。weboptions
オブジェクトとして指定します。weboptions
オブジェクトは、指定した filename
がプロトコル タイプ "http://"
または "https://"
を含むインターネット URL である場合にデータをインポートする方式を決定します。
XML の属性
属性のインポート。数値または logical 1
(true
) または 0
(false
) として指定します。値を false
に指定すると、readstruct
は入力ファイル内の XML 属性を出力構造体のフィールドとしてインポートしません。
例: ImportAttributes=false
属性接尾辞。string スカラーまたは文字ベクトルとして指定します。readstruct
は、この接尾辞を入力 XML ファイルに含まれる属性に対応する出力構造体のすべてのフィールド名に付加します。AttributeSuffix
を指定しない場合、readstruct
は既定で接尾辞 "Attribute"
を入力 XML ファイルに含まれる属性に対応するすべてのフィールド名に付加します。
例: AttributeSuffix="_att"
登録済みの 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"]
JSON 標準
R2023b 以降
解析時に JSON 標準にどれだけ厳格に準拠するか。次の値のいずれかとして指定します。
"lenient"
(既定の設定) –AllowComments
、AllowInfAndNaN
、およびAllowTrailingCommas
の値がtrue
に設定されます。"strict"
–AllowComments
、AllowInfAndNaN
、およびAllowTrailingCommas
の値がfalse
に設定されます。
R2023b 以降
入力ファイルでコメントを許可するかどうか。次のいずれかの値として指定します。
数値または logical
1
(true
) (既定の設定) – インポート時にコメントはエラーになりません。ファイル内のコメントはデータとみなされず、MATLAB に読み取られません。コメントは、単一行のコメントの場合は「//」で開始できます。複数行のコメントの場合は、「/*」で開始し、「*/」で終了することができます。数値または logical
0
(false
) – インポート時にコメントはエラーになります。
R2023b 以降
入力ファイル内の Inf
および NaN
リテラルを読み取るかどうか。次のいずれかの値として指定します。
数値または logical
1
(true
) (既定の設定) –Inf
およびNaN
リテラル (Infinity
、-Inf
、-Infinity
を含む) は MATLAB に読み取られます。数値または logical
0
(false
) – インポート時にInf
およびNaN
リテラルはエラーになります。
R2023b 以降
入力ファイル内の末尾のコンマを読み取るかどうか。次のいずれかの値として指定します。
数値または logical
1
(true
) (既定の設定) – インポート時に JSON 配列または JSON オブジェクトの後の末尾のコンマはエラーになりません。数値または logical
0
(false
) – インポート時に末尾のコンマはエラーになります。
出力引数
拡張機能
使用上の注意および制限:
readstruct
は、XML ファイルではスレッドベースのワークフローのみをサポートしています。
バージョン履歴
R2020b で導入JSON ファイルの内容を MATLAB に構造体としてインポートできます。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)