writestruct
構造体配列をファイルに書き込む
説明
writestruct(
は、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、S
,filename
,Name=Value
)filename
で指定されたファイル拡張子にかかわらず、writestruct(filename,FileType="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: [1×1 struct]
Musicians: [1×1 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: [1×1 struct]
Musicians: [1×1 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: [1×1 struct]
Musicians: [1×1 struct]
関連する属性をもつ出力構造体のすべての要素には接尾辞 "_att"
が属性名に追加されます。
フィールド Musicians
をクエリして内容を表示します。Musicians
は 5 つの構造体を含む構造体で、そのそれぞれの構造体には、role
という関連する属性をもつ Name
というフィールドが含まれています。
contents = S.Musicians
contents = struct with fields:
Name: [1×5 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>
ファイル 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 } ] }
入力引数
入力構造体。MATLAB 構造体として指定します。構造体は、フィールドと呼ばれるデータ コンテナーを使って、関連するデータをグループとしてまとめるデータ型です。各フィールドには任意のデータ型を含めることができます。structName.fieldName
の形式のドット表記を使用して、構造体内のデータにアクセスします。構造体の詳細については、struct
を参照してください。
XML ファイルを作成する際に、入力構造体のフィールドに欠損値または NaN
が含まれている場合、writestruct
はフィールドの内容を空の string として書き込みます。JSON ファイルを作成する際に、writestruct
は欠損値を null
値として書き込み、NaN
値を、名前と値の引数 PreserveInfAndNan
に応じて null
値または NaN
値として書き込みます。
書き込むファイルの名前。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 ファイルのルート ノードに使用する名前を指定します。
ファイルのタイプ。次の値のいずれかとして指定します。
"xml"
—filename
で指定されるファイル拡張子にかかわらず、構造体の内容を XML ファイルとしてエクスポートします。"json"
—filename
で指定されるファイル拡張子にかかわらず、構造体の内容を JSON ファイルとしてエクスポートします。 (R2023b 以降)
.xml
でも .json
でもないファイル拡張子を filename
で指定した場合、FileType
を "xml"
または "json"
として指定して、入力構造体の内容をそれぞれ XML または JSON として書き込むことができます。
例: FileType="xml"
R2023b 以降
出力ファイルでテキストをインデントするかどうか。数値または logical 1
(true
) または 0
(false
) として指定します。値を true
に指定すると、writestruct
は 4 つのスペースから成るインデントを追加して XML または JSON テキストを書き込みます。
出力 XML ファイルのルート ノード名。string スカラーまたは文字ベクトルとして指定します。StructNodeName
を指定しない場合、ルート ノードの既定の名前は "struct"
です。
例: StructNodeName="RootName"
XML 属性接尾辞。string スカラーまたは文字ベクトルとして指定します。この接尾辞は、出力 XML ファイルで属性として書き込む入力構造体のフィールド名を示します。
AttributeSuffix
の値が入力構造体の属性名の接尾辞に一致している場合、その接尾辞は出力 XML ファイルで属性名から取り除かれます。たとえば、AttributeSuffix
を "_att"
として指定した場合、MyField_att
という名前の入力構造体のフィールドは XML ファイルで MyField
という名前の属性として書き込まれます。
AttributeSuffix
を指定しなかった場合、writestruct
は既定で出力 XML ファイルで接尾辞 "Attribute"
を付けてフィールドを属性として書き込みます。
例: AttributeSuffix="_att"
R2023b 以降
出力 JSON ファイルでの Inf
値および NaN
値の保持。数値または logical 1
(true
) または 0
(false
) として指定します。すべての Inf
値および NaN
値を JSON null
値として書き込む場合は、この引数を false
として指定します。
例: PreserveInfAndNaN=false
バージョン履歴
R2020b で導入MATLAB 構造体の内容を JSON ファイルに書き込むことができます。
既定では、writestruct
は XML または JSON テキストを書き込む際に 4 つのスペースから成るインデントを使用します。インデントを使用せずにファイルを書き込む場合は、名前と値の引数 PrettyPrint
を false として指定します。
既定では、writestruct
は JSON ファイルに書き込む際に Inf
値および NaN
値を保持します。Inf
値および NaN
値を JSON null 値として書き込む場合は、名前と値の引数 PreserveInfAndNaN
を false として指定します。
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)