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)