Main Content

writestruct

将结构体写入文件

自 R2020b 起

    说明

    示例

    writestruct(S,filename) 将结构体写入具有 filename 指定的名称和扩展名的文件。当 filename 中的文件扩展名指定为 .xml 时,writestruct 函数会自动将输入结构体写入 XML 文件中。

    示例

    writestruct(S,filename,Name,Value) 用一个或多个名称-值对组参数指定的附加选项将结构体写入文件。例如,您可以通过调用 writestruct(filename,"FileType","xml") 将输入结构体的内容导出为 XML 文件,而不考虑 filename 中指定的文件扩展名。

    示例

    全部折叠

    基于包含 XML 结构体的文本文件创建一个结构体,然后再将该结构体写入一个 XML 文件。

    文件 music.txt 具有以下结构。

    music.png

    将文本文件 music.txt 读取为结构体 S。将 'FileType' 指定为 'xml',以将输入的内容作为 XML 文件读取。

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

    S 写入名为 band.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]
    
    

    S 写入名为 band.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 读取。将后缀 "_att" 追加到与输入 XML 文件中的属性对应的输出结构体的字段名称之后。

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

    S 中所有具有关联属性的元素的属性名称后都会追加后缀 "_att"

    查询字段 Musicians 以查看其内容。Musicians 是一个包含五个结构体的结构体,其中每个结构体都包含一个名为 Name 的字段以及一个名为 role 的关联属性。

    S.Musicians.Name
    ans=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>
    
    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 结构体。结构体是使用被称为字段的数据容器将相关数据组合在一起的一种数据类型。

    如果输入结构体中的一个字段包含缺失值或 NaNwritestruct 将以空字符串形式写入该字段的内容。

    有关结构体的详细信息,请参阅 struct

    要写入的文件名,指定为字符向量或字符串标量。如果 filename 不存在,则写入函数会创建该文件。如果 filename 是现有文件的名称,则写入函数会覆盖它。

    根据您写入的位置,filename 可以采用以下形式之一。

    位置

    形式

    当前文件夹

    要写入当前文件夹,请在 filename 中指定文件名。

    示例:'myFile.xml'

    其他文件夹

    要写入不同于当前文件夹的文件夹,请在 filename 中指定完整或相对路径名称。

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

    示例:'myFolder\myFile.xml'

    远程位置

    要写入远程位置,请指定以下形式的统一资源定位器 (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' - 将结构体的内容导出为 XML 文件,而不考虑 filename 中指定的文件扩展名。

    如果在 filename 中指定的文件扩展名不是 .xml,您可以将 'FileType' 的值指定为 'xml',以将输入结构体的内容作为 XML 写入。

    示例: 'FileType','xml'

    输出 XML 文件的根节点名称,指定为以逗号分隔的对组,由 'StructNodeName' 和包含要在输出中使用的根节点名称的字符向量或字符串标量组成。如果未指定 StructNodeName,则根节点的默认名称为 "struct"

    示例: 'StructNodeName','RootName'

    属性后缀,指定为以逗号分隔的对组,由 'AttributeSuffix' 和指示输入结构体中的哪些字段名称要作为属性写入输出 XML 文件的字符向量或字符串标量组成。

    例如,对于输入结构体中的字段名称 AttName_att,您可以指定 'AttributeSuffix','_att' 来指示使用 'AttName' 作为输出 XML 文件中的属性来写出。

    • 如果未指定 'AttributeSuffix'writestruct 默认将后缀为 'Attribute' 的字段作为属性写入输出 XML 文件中。

    • 如果指定为 'AttributeSuffix' 的值的属性与追加到输入结构体中属性名称的后缀匹配,则该后缀会从输出 XML 文件的属性名称中删除。例如,如果指定 'AttributeSuffix','_att',则输入结构体中名为 MyField_att 的字段将对应于 XML 文件中名为 MyField 的属性。

    示例: 'AttributeSuffix','_att'

    版本历史记录

    在 R2020b 中推出

    另请参阅