writestruct
説明
writestruct(
は、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、S
,filename
,Name=Value
)filename
で指定されたファイル拡張子にかかわらず、writestruct(filename,FileType="xml")
を呼び出して、入力構造体の内容を XML ファイルとしてエクスポートできます。
例
構造体の XML ファイルへの書き込み
XML 構造を含むテキスト ファイルから構造体を作成し、それを XML ファイルに書き込みます。
ファイル music.txt
の内容を表示します。
type music.txt
<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.txt
を構造体としてインポートします。名前と値の引数 FileType
を "xml"
として指定して、内容を XML ファイルとして読み取ります。
S = readstruct("music.txt","FileType","xml")
S = struct with fields:
Ensemble: [1x1 struct]
Musicians: [1x1 struct]
構造体を XML ファイルに書き込みます。XML ファイルの内容を表示します。
writestruct(S,"band.xml") type band.xml
<?xml version="1.0" encoding="UTF-8"?> <struct> <Ensemble> <Music>Jazz</Music> <BandName>Kool Katz</BandName> <Instrumentation> <Instrument type="wind"> <Text>Trumpet</Text> </Instrument> <Instrument type="percussion"> <Text>Piano</Text> <pianotype>concert grand</pianotype> </Instrument> <Instrument type="percussion"> <Text>Drums</Text> <drumkit>Bass drum</drumkit> <drumkit>Floor tom</drumkit> <drumkit>Snare drum</drumkit> <drumkit>Hi-hat</drumkit> <drumkit>Ride cymbal</drumkit> </Instrument> <Instrument type="string"> <Text>Bass</Text> <basstype>upright</basstype> </Instrument> </Instrumentation> </Ensemble> <Musicians> <Name role="trumpeter"> <Text>Miles</Text> </Name> <Name role="vocalist"> <Text>Roger</Text> </Name> <Name role="pianist"> <Text>Diana</Text> </Name> <Name role="drummer"> <Text>George</Text> </Name> <Name role="bassist"> <Text>John</Text> </Name> </Musicians> </struct>
出力ファイルでのルート ノードの指定
music.xml
ファイルを構造体としてインポートします。
S = readstruct("music.xml")
S = struct with fields:
Ensemble: [1x1 struct]
Musicians: [1x1 struct]
構造体を XML ファイルに書き込みます。ルート ノードに JazzBand
という名前を付けます。XML ファイルの内容を表示します。
writestruct(S,"band.xml","StructNodeName","JazzBand") type band.xml
<?xml version="1.0" encoding="UTF-8"?> <JazzBand> <Ensemble> <Music>Jazz</Music> <BandName>Kool Katz</BandName> <Instrumentation> <Instrument type="wind"> <Text>Trumpet</Text> </Instrument> <Instrument type="percussion"> <Text>Piano</Text> <pianotype>concert grand</pianotype> </Instrument> <Instrument type="percussion"> <Text>Drums</Text> <drumkit>Bass drum</drumkit> <drumkit>Floor tom</drumkit> <drumkit>Snare drum</drumkit> <drumkit>Hi-hat</drumkit> <drumkit>Ride cymbal</drumkit> </Instrument> <Instrument type="string"> <Text>Bass</Text> <basstype>upright</basstype> </Instrument> </Instrumentation> </Ensemble> <Musicians> <Name role="trumpeter"> <Text>Miles</Text> </Name> <Name role="vocalist"> <Text>Roger</Text> </Name> <Name role="pianist"> <Text>Diana</Text> </Name> <Name role="drummer"> <Text>George</Text> </Name> <Name role="bassist"> <Text>John</Text> </Name> </Musicians> </JazzBand>
属性接尾辞の指定
出力 XML ファイルで属性として書き込む入力構造体のフィールド名を指定します。
music.xml
ファイルを構造体としてインポートします。入力 XML ファイルの属性に対応する出力構造体のフィールド名に接尾辞 "_att"
を追加します。
S = readstruct("music.xml","AttributeSuffix","_att")
S = struct with fields:
Ensemble: [1x1 struct]
Musicians: [1x1 struct]
関連する属性をもつ出力構造体のすべての要素には接尾辞 "_att"
が属性名に追加されます。
フィールド Musicians
をクエリして内容を表示します。Musicians
は 5 つの構造体を含む構造体で、そのそれぞれの構造体には、role
という関連する属性をもつ Name
というフィールドが含まれています。
contents = S.Musicians
contents = struct with fields:
Name: [1x5 struct]
RolesNames = S.Musicians.Name
RolesNames=1×5 struct array with fields:
role_att
Text
構造体 S
を band.xml
という名前の XML ファイルに書き込み、その内容を表示します。接尾辞 "_att"
がファイルの属性名に追加されます。
writestruct(S,"band.xml") type band.xml
<?xml version="1.0" encoding="UTF-8"?> <struct> <Ensemble> <Music>Jazz</Music> <BandName>Kool Katz</BandName> <Instrumentation> <Instrument> <type_att>wind</type_att> <Text>Trumpet</Text> </Instrument> <Instrument> <type_att>percussion</type_att> <Text>Piano</Text> <pianotype>concert grand</pianotype> </Instrument> <Instrument> <type_att>percussion</type_att> <Text>Drums</Text> <drumkit>Bass drum</drumkit> <drumkit>Floor tom</drumkit> <drumkit>Snare drum</drumkit> <drumkit>Hi-hat</drumkit> <drumkit>Ride cymbal</drumkit> </Instrument> <Instrument> <type_att>string</type_att> <Text>Bass</Text> <basstype>upright</basstype> </Instrument> </Instrumentation> </Ensemble> <Musicians> <Name> <role_att>trumpeter</role_att> <Text>Miles</Text> </Name> <Name> <role_att>vocalist</role_att> <Text>Roger</Text> </Name> <Name> <role_att>pianist</role_att> <Text>Diana</Text> </Name> <Name> <role_att>drummer</role_att> <Text>George</Text> </Name> <Name> <role_att>bassist</role_att> <Text>John</Text> </Name> </Musicians> </struct>
構造体 S
を XML ファイルに再度書き込みます。今回は名前と値の引数 AttributeSuffix
を "_att"
として指定して、属性として書き込む入力構造体のフィールド名を示します。band.xml
の内容を表示します。band.xml
の属性には接尾辞 "_att"
はありません。
writestruct(S,"band.xml","AttributeSuffix","_att") type band.xml
<?xml version="1.0" encoding="UTF-8"?> <struct> <Ensemble> <Music>Jazz</Music> <BandName>Kool Katz</BandName> <Instrumentation> <Instrument type="wind"> <Text>Trumpet</Text> </Instrument> <Instrument type="percussion"> <Text>Piano</Text> <pianotype>concert grand</pianotype> </Instrument> <Instrument type="percussion"> <Text>Drums</Text> <drumkit>Bass drum</drumkit> <drumkit>Floor tom</drumkit> <drumkit>Snare drum</drumkit> <drumkit>Hi-hat</drumkit> <drumkit>Ride cymbal</drumkit> </Instrument> <Instrument type="string"> <Text>Bass</Text> <basstype>upright</basstype> </Instrument> </Instrumentation> </Ensemble> <Musicians> <Name role="trumpeter"> <Text>Miles</Text> </Name> <Name role="vocalist"> <Text>Roger</Text> </Name> <Name role="pianist"> <Text>Diana</Text> </Name> <Name role="drummer"> <Text>George</Text> </Name> <Name role="bassist"> <Text>John</Text> </Name> </Musicians> </struct>
NaN 値の null 値への置き換え
ファイル musicians.txt
の内容を表示します。
type musicians.txt
{ "Orchestra": { "Music": "classical", "Instruments": [ { "Section": "string", "Musicians": 5 }, { "Section": "brass", "Musicians": 5 }, { "Section": "woodwind", "Musicians": NaN } ] }, "Band": [ { "Section": "guitar", "Musicians": 2 }, { "Section": "bass", "Musicians": NaN }, { "Section": "drums", "Musicians": 1 }, ] }
musicians.txt
から構造体を作成します。ファイルを JSON ファイルとして解析します。
S = readstruct("musicians.txt",FileType="json");
構造体 S
を musicians.json
に書き込みます。すべての NaN
値を null
値に置き換えます。
writestruct(S,"musicians.json",PreserveInfAndNaN=false) type musicians.json
{ "Orchestra": { "Music": "classical", "Instruments": [ { "Section": "string", "Musicians": 5.0 }, { "Section": "brass", "Musicians": 5.0 }, { "Section": "woodwind", "Musicians": null } ] }, "Band": [ { "Section": "guitar", "Musicians": 2.0 }, { "Section": "bass", "Musicians": null }, { "Section": "drums", "Musicians": 1.0 } ] }
入力引数
S
— 入力構造体
MATLAB® 構造体
入力構造体。MATLAB 構造体として指定します。構造体は、フィールドと呼ばれるデータ コンテナーを使って、関連するデータをグループとしてまとめるデータ型です。各フィールドには任意のデータ型を含めることができます。structName.fieldName
の形式のドット表記を使用して、構造体内のデータにアクセスします。構造体の詳細については、struct
を参照してください。
XML ファイルを作成する際に、入力構造体のフィールドに欠損値または NaN
が含まれている場合、writestruct
はフィールドの内容を空の string として書き込みます。JSON ファイルを作成する際に、writestruct
は欠損値を null
値として書き込み、NaN
値を、名前と値の引数 PreserveInfAndNan
に応じて null
値または NaN
値として書き込みます。
filename
— 書き込むファイルの名前
string スカラー | 文字ベクトル
書き込むファイルの名前。string スカラーまたは文字ベクトルとして指定します。filename
が存在しない場合、書き込み関数がファイルを作成します。filename
が既存のファイルの名前である場合、書き込み関数はそのファイルを上書きします。
書き込み先の場所によって、filename
は次のいずれかの形式にできます。
場所 | 形式 | ||||||||
---|---|---|---|---|---|---|---|---|---|
現在のフォルダー | 現在のフォルダーに書き込むには、ファイルの名前を 例: 例: | ||||||||
その他のフォルダー | 現在のフォルダーではないフォルダーに書き込むには、絶対パス名または相対パス名を 例: 例: 例: 例: | ||||||||
リモートの場所 | リモートの場所に書き込むには、次の形式の Uniform Resource Locator (URL) を指定します。
リモートの場所に基づいて、
詳細については、リモート データの操作を参照してください。 例: 例: |
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
例: writestruct(S,"myfile.xml",StructNodeName="RootName")
は出力 XML ファイルのルート ノードに使用する名前を指定します。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: writestruct(S,"myfile.xml","StructNodeName","RootName")
は出力 XML ファイルのルート ノードに使用する名前を指定します。
FileType
— ファイルの種類
"xml"
| "json"
ファイルのタイプ。次の値のいずれかとして指定します。
"xml"
—filename
で指定されるファイル拡張子にかかわらず、構造体の内容を XML ファイルとしてエクスポートします。"json"
—filename
で指定されるファイル拡張子にかかわらず、構造体の内容を JSON ファイルとしてエクスポートします。 (R2023b 以降)
.xml
でも .json
でもないファイル拡張子を filename
で指定した場合、FileType
を "xml"
または "json"
として指定して、入力構造体の内容をそれぞれ XML または JSON として書き込むことができます。
例: FileType="xml"
PrettyPrint
— テキストのインデント
true
または 1
(既定値) | false
または 0
R2023b 以降
出力ファイルでテキストをインデントするかどうか。数値または logical 1
(true
) または 0
(false
) として指定します。値を true
に指定すると、writestruct
は 4 つのスペースから成るインデントを追加して XML または JSON テキストを書き込みます。
StructNodeName
— 出力 XML ファイルのルート ノード
"struct"
(既定値) | string スカラー | 文字ベクトル
出力 XML ファイルのルート ノード名。string スカラーまたは文字ベクトルとして指定します。StructNodeName
を指定しない場合、ルート ノードの既定の名前は "struct"
です。
例: StructNodeName="RootName"
AttributeSuffix
— XML 属性接尾辞
"Attribute"
(既定値) | string スカラー | 文字ベクトル
XML 属性接尾辞。string スカラーまたは文字ベクトルとして指定します。この接尾辞は、出力 XML ファイルで属性として書き込む入力構造体のフィールド名を示します。
AttributeSuffix
の値が入力構造体の属性名の接尾辞に一致している場合、その接尾辞は出力 XML ファイルで属性名から取り除かれます。たとえば、AttributeSuffix
を "_att"
として指定した場合、MyField_att
という名前の入力構造体のフィールドは XML ファイルで MyField
という名前の属性として書き込まれます。
AttributeSuffix
を指定しなかった場合、writestruct
は既定で出力 XML ファイルで接尾辞 "Attribute"
を付けてフィールドを属性として書き込みます。
例: AttributeSuffix="_att"
PreserveInfAndNaN
— JSON ファイルでの Inf
値および NaN
値の保持
true
または 1
(既定値) | false
または 0
R2023b 以降
出力 JSON ファイルでの Inf
値および NaN
値の保持。数値または logical 1
(true
) または 0
(false
) として指定します。すべての Inf
値および NaN
値を JSON null
値として書き込む場合は、この引数を false
として指定します。
例: PreserveInfAndNaN=false
バージョン履歴
R2020b で導入R2023b: JSON ファイルへの構造体の書き込み
MATLAB 構造体の内容を JSON ファイルに書き込むことができます。
R2023b: 出力ファイルでテキストをインデントするかどうかの制御
既定では、writestruct
は XML または JSON テキストを書き込む際に 4 つのスペースから成るインデントを使用します。インデントを使用せずにファイルを書き込む場合は、名前と値の引数 PrettyPrint
を false として指定します。
R2023b: 出力 JSON ファイルで Inf
値および NaN
値を保持するかどうかの制御
既定では、writestruct
は JSON ファイルに書き込む際に Inf
値および NaN
値を保持します。Inf
値および NaN
値を JSON null 値として書き込む場合は、名前と値の引数 PreserveInfAndNaN
を false として指定します。
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)