Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

writestruct

ファイルへの構造体の書き込み

    説明

    writestruct(S,filename) は、構造体を filename で指定された名前と拡張子のファイルに書き込みます。関数 writestruct は、filename でファイル拡張子として .xml が指定された場合に、構造体を XML ファイルに自動的に書き込みます。

    writestruct(S,filename,Name,Value) は、1 つ以上の名前と値のペアの引数で指定された追加のオプションを使用して、構造体をファイルに書き込みます。たとえば、filename で指定されたファイル拡張子にかかわらず、writestruct(filename,"FileType","xml") を呼び出して、入力構造体の内容を XML ファイルとしてエクスポートできます。

    すべて折りたたむ

    XML 構造を含むテキスト ファイルから構造体を作成し、それを XML ファイルに書き込みます。

    ファイル music.txt の構造は以下のとおりです。

    テキスト ファイル music.txt を構造体 S として読み取ります。'FileType''xml' として指定して、入力の内容を XML ファイルとして読み取ります。

    S = readstruct("music.txt","FileType","xml")
    S = struct with fields:
         Ensemble: [1x1 struct]
        Musicians: [1x1 struct]
    
    

    Sband.xml という名前の XML ファイルに書き込みます。band.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>
                </Instrument>
                <Instrument type="percussion">
                    <Text>Drums</Text>
                </Instrument>
                <Instrument type="string">
                    <Text>Bass</Text>
                </Instrument>
                <pianotype>concert grand</pianotype>
                <drumkit>Bass drum</drumkit>
                <drumkit>Floor tom</drumkit>
                <drumkit>Snare drum</drumkit>
                <drumkit>Hi-hat</drumkit>
                <drumkit>Ride cymbal</drumkit>
                <basstype>upright</basstype>
            </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 として読み取ります。

    S = readstruct("music.xml")
    S = struct with fields:
         Ensemble: [1x1 struct]
        Musicians: [1x1 struct]
    
    

    Sband.xml という名前の XML ファイルに書き込みます。ルート ノードに JazzBand という名前を付けます。band.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 ファイルを構造体 S として読み取ります。入力 XML ファイルの属性に対応する出力構造体のフィールド名に接尾辞 "_att" を追加します。

    S = readstruct("music.xml", "AttributeSuffix", "_att")
    S = struct with fields:
         Ensemble: [1x1 struct]
        Musicians: [1x1 struct]
    
    

    関連する属性をもつ S のすべての要素には接尾辞 "_att" が属性名に追加されます。

    フィールド Musicians をクエリして内容を表示します。Musicians は 5 つの構造体を含む構造体で、そのそれぞれの構造体には、role という関連する属性をもつ Name というフィールドが含まれています。

    S.Musicians.Name
    ans=1×5 struct array with fields:
        role_att
        Text
    
    

    Sband.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>
    
    writestruct(S,"band.xml","AttributeSuffix","_att")

    構造体 S を XML ファイルに再度書き込みます。今回は "AttributeSuffix" の値を "_att" 指定して、属性として書き込む入力構造体のフィールドを示します。band.xml の内容を表示します。band.xml の属性には接尾辞 "_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>
    

    入力引数

    すべて折りたたむ

    入力構造体。MATLAB 構造体として指定します。構造体は、フィールドと呼ばれるデータ コンテナーを使って、関連するデータをグループとしてまとめるデータ型です。

    入力構造体に欠損値または NaN が含まれている場合、writestruct はフィールドの内容を空の string として書き込みます。

    構造体の詳細については、struct を参照してください。

    書き込み対象のファイル名。文字ベクトルまたは string スカラーとして指定します。filename が存在しない場合、書き込み関数がファイルを作成します。filename が既存のファイルの名前である場合、書き込み関数はそのファイルを上書きします。

    書き込み先の場所によって、filename は次のいずれかの形式にできます。

    場所

    形式

    現在のフォルダー

    現在のフォルダーに書き込むには、ファイルの名前を filename に指定します。

    例: 'myFile.xml'

    その他のフォルダー

    現在のフォルダーとは異なるフォルダーに書き込むには、絶対パス名または相対パス名を filename に指定します。

    例: 'C:\myFolder\myFile.xml'

    例: 'myFolder\myFile.xml'

    リモートの場所

    リモートの場所に書き込むには、次の形式の Uniform Resource Locator (URL) を指定します。

    scheme_name://path_to_file/my_file.ext

    リモートの場所に基づいて、scheme_name には次の表の値のいずれかを指定できます。

    リモートの場所scheme_name
    Amazon S3™s3
    Windows Azure® Blob Storagewasb, wasbs
    HDFS™hdfs

    詳細については、リモート データの操作を参照してください。

    例: 's3://bucketname/path_to_file/myFile.xml'

    名前と値の引数

    引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

    R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

    例: 'StructNodeName','RootName' は出力 XML ファイルのルート ノードに使用する名前を指定します。

    ファイルの種類。'FileType' と次の値のいずれかで構成されるコンマ区切りのペアとして指定します。

    • 'auto'filename で指定される拡張子から、書き込むファイル形式を自動的に検出します。

    • 'xml'filename で指定される拡張子にかかわらず、構造体の内容を XML ファイルとしてエクスポートします。

    filename.xml でないファイル拡張子を指定する場合、'FileType' の値を 'xml' として指定して、入力構造体の内容を XML として書き出すことができます。

    例: 'FileType','xml'

    出力 XML ファイルのルート ノードの名前。'StructNodeName' と、出力で使用するルート ノードの名前を含む文字ベクトルまたは string スカラーとして指定します。StructNodeName を指定しない場合、ルート ノードの既定の名前は "struct" です。

    例: 'StructNodeName','RootName'

    属性接尾辞。'AttributeSuffix' と、出力 XML ファイルで属性として書き込む入力構造体のフィールド名を示す文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。

    たとえば、入力構造体のフィールド名 AttName_att について、'AttributeSuffix','_att' を指定して、'AttName' が出力 XML ファイルで属性として書き込まれる必要があることを示します。

    • 'AttributeSuffix' を指定しない場合、writestruct は既定で出力 XML ファイルで属性としてフィールドを接尾辞 'Attribute' を付けて書き出します。

    • 'AttributeSuffix' の値として指定される属性が入力構造体の属性名に追加される接尾辞に一致する場合、その接尾辞は出力 XML ファイルの属性名から除かれます。たとえば、'AttributeSuffix','_att' を指定する場合、MyField_att という名前の入力構造体のフィールドは XML ファイルの MyField という属性に対応します。

    例: 'AttributeSuffix','_att'

    バージョン履歴

    R2020b で導入