主要内容

readstruct

从文件创建结构

    描述

    例子

    年代= readstruct (文件名通过从文件中读取结构化数据来创建结构。输入文件必须包含格式良好的XML结构。

    readstruct自动检测输入文件中内容的数据类型。

    例子

    年代= readstruct (文件名名称,值使用由一个或多个名-值对参数指定的附加选项从文件创建结构。例如,当文件扩展名为时,可以将输入文件的内容读取为XML文件名不是. xml通过调用S = readstruct(filename,'FileType','xml')

    例子

    全部折叠

    将XML文件作为结构读取,从结构中创建变量,并查询其内容。

    该文件music.xml具有以下结构。

    music.png

    music.xml在MATLAB中作为一个结构年代.该结构包含一个父节点MusicalEnsemble它有两个兄弟节点,系综而且音乐家

    S = readstruct(“music.xml”
    S =带字段的结构:合奏:[1x1 struct]音乐家:[1x1 struct]

    创建一个变量乐队从第一个兄弟节点开始。乐队有三个字段,其中一个是名为仪表

    合奏乐队
    乐队=带字段的结构:音乐:“Jazz”乐队名:“Kool Katz”乐器:[1x1 struct]

    查询仪表乐队查看其内容。

    乐队。仪表
    ans =带字段的结构:仪器:[1x4结构]

    创建一个变量音乐家从第二个兄弟节点开始。音乐家有一个字段叫做的名字,包含五个结构。

    音乐家
    音乐家=带字段的结构:名称:[1x5 struct]

    从不包含统一结构数据的XML文件创建结构,然后显示其内容。

    如果一个兄弟节点包含其他兄弟节点没有的字段,readstruct返回失踪用于其他节点中没有的字段。例如,在文件中music.xml,第二仪器节点包含非空字段pianotype.因为另一个仪器节点没有指定的值pianotypereadstruct返回失踪pianotype在这些仪器节点。

    music.png

    读取XML文件music.xml一个结构年代

    S = readstruct(“music.xml”
    S =带字段的结构:合奏:[1x1 struct]音乐家:[1x1 struct]

    查询S中的Instrument结构以查看其内容。

    S.Ensemble.Instrumentation.Instrument
    ans =1×4包含字段的struct数组:钢琴鼓部的低音类型

    将文本文件作为结构体读取。

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

    music.png

    阅读文本文件music.txt进入MATLAB®作为结构年代.指定“文件类型”作为“xml”将输入的内容作为XML文件读取。

    S = readstruct(“music.txt”“文件类型”“xml”
    S =带字段的结构:合奏:[1x1 struct]音乐家:[1x1 struct]

    属性从输入文件中的特定元素节点创建结构“StructNodeName”名称-值对。

    读了仪表节点从XML文件music.xml

    S = readstruct(“music.xml”“StructNodeName”“仪器”
    S =带字段的结构:仪器:[1x4结构]

    指定精确的XML元素节点,从该节点开始读取输入文件中的结构。

    阅读第五篇的名字元素music.xml.的值指定元素节点的完整XPath表达式“StructSelector”

    S = readstruct(“music.xml”“StructSelector”“/ MusicalEnsemble /音乐家的名字[5]”
    S =带字段的结构:roleAttribute:“贝斯手”文本:“约翰”

    属性将自定义XML名称空间前缀注册到输入文件中的现有名称空间URLRegisteredNamespaces名称-值参数。

    读第二篇元素节点作为结构,指定值“StructSelector”作为/ /学生[2]/地址/ myPrefix:街”而价值RegisteredNamespaces作为[" myPrefix ", " //www.tatmou.com ")

    S = readstruct(“students.xml”“RegisteredNamespaces”, (“myPrefix”“//www.tatmou.com”],...“StructSelector”/ /学生[2]/地址/ myPrefix:街”
    S =带字段的结构:xmlnsAttribute:“//www.tatmou.com”文本:“4641珍珠街”

    输入参数

    全部折叠

    要读取的文件的名称,指定为字符向量或字符串标量。

    根据文件的位置,文件名可以采取这些形式之一。

    位置

    形式

    MATLAB中的当前文件夹或文件夹®路径

    中指定文件的名称文件名

    例子:“myFile.xml”

    文件夹中的文件

    如果文件不在当前文件夹或MATLAB路径上的文件夹中,则在中指定完整或相对路径名文件名

    例子:“C: \ myFolder \ myFile.xml”

    例子:“dataDir \ myFile.xml”

    互联网网址

    如果文件指定为internet统一资源定位符(URL),则文件名必须包含协议类型“http://”“https://”

    例子:“http://hostname/path_to_file/my_data.xml”

    远程位置

    如果文件存储在远程位置,则文件名必须包含由表单指定的文件的完整路径:

    scheme_name://path_to_file/my_file.ext

    根据位置的远近scheme_name可以是本表中的值之一。

    远程位置 scheme_name
    Amazon S3™ s3
    Windows Azure®Blob存储 wasbwasbs
    HDFS™ hdfs

    有关更多信息,请参见使用远程数据

    例子:s3: / / bucketname / path_to_file / my_setup.xml '

    名称-值参数

    指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

    在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

    例子:“ImportAttributes”,真的指定将与元素节点关联的属性作为输出结构的字段导入。

    文件类型,指定为逗号分隔的对,由“文件类型”其中一个价值观是:

    • “汽车”中指定的扩展名自动检测输入文件的文件格式文件名

    • “xml”—将输入文件的内容读取为XML格式。

    如果文件扩展名为文件名不是. xml的值“文件类型”作为“xml”以XML格式读取输入文件的内容。

    例子:“文件类型”,“xml”

    用于读取日期的区域设置,指定为逗号分隔的对,由“DateLocale”和这种形式的字符向量或字符串标量xx_YY,地点:

    • YY是大写的ISO 3166-1 alpha-2代码,表示国家。

    • xx是ISO 639-1的两个字母的小写代码,表示一种语言。

    该表列出了区域设置的一些常用值。

    语言环境 语言 国家
    “de_DE” 德国 德国
    “en_GB” 英语 联合王国
    “en_US” 英语 美国
    “es_ES” 西班牙语 西班牙
    “fr_FR” 法国 法国
    “it_IT” 意大利 意大利
    “ja_JP” 日本 日本
    “ko_KR” 朝鲜文 韩国
    “设置nl_NL” 荷兰 荷兰
    “zh_CN” 中文(简体) 中国

    例子:“DateLocale”、“ja_JP”

    起始XML元素,指定为逗号分隔的对,由“StructNodeName”或字符向量或字符串标量readstruct读取输入文件中的结构,从指定的XML元素开始。如果您没有指定StructNodeName,然后readstruct读取从XML文件根开始的结构。

    readstruct中指定的值匹配XML文档中名称与之匹配的第一个节点StructNodeName

    例子:“StructNodeName”、“RootName”

    起始XML路径,指定为逗号分隔的对,由“StructSelector”和字符向量或字符串标量readstruct读取输入文件中从指定路径上的元素开始的结构。的价值“StructSelctor”必须是有效的XPath 1.0版本表达式。

    导入属性,指定为逗号分隔的对,由“ImportAttributes”,要么1真正的)或0).如果将值指定为,然后readstruct将不会将输入文件中的XML属性作为输出结构中的字段导入。

    例子:“ImportAttributes”,假的

    属性后缀,指定为逗号分隔的对,由“AttributeSuffix”或字符向量或字符串标量。readstruct将此后缀附加到与输入XML文件中的属性对应的输出结构的所有字段名。如果您没有指定“AttributeSuffix”,然后readstruct默认为附加后缀“属性”到与输入XML文件中的属性对应的所有字段名。

    例子:“AttributeSuffix”、“_att”

    已注册的XML名称空间前缀集,指定为RegisteredNamespaces和一个前缀数组。读取函数在计算XML文件上的XPath表达式时使用这些前缀。将命名空间前缀及其关联的url指定为Nx2字符串数组。RegisteredNamespaces也可以在计算由选择器名称-值参数指定的XPath表达式时使用,例如StructSelectorreadstruct,或VariableSelectorsreadtable而且readtimetable

    默认情况下,读取函数自动检测要注册的名称空间前缀,以便在XPath求值中使用,但是您也可以使用RegisteredNamespaces名称-值参数。当XML节点有名称空间URL,但在XML文件中没有声明名称空间前缀时,可以注册一个新的名称空间前缀。

    例如,计算XML文件上的XPath表达式example.xml不包含名称空间前缀的。指定“RegisteredNamespaces”作为[" myprefix ", " //www.tatmou.com ")要分配前缀myprefix到URL//www.tatmou.com

    S = readstruct("example.xml",StructSelector="/myprefix:Data",…RegisteredNamespaces = [" myprefix ", " //www.tatmou.com "])

    例子:“RegisteredNamespaces”,(“myprefix”、“//www.tatmou.com”)

    HTTPHTTPS请求选项,作为weboptions对象。的weboptions对象确定在指定时如何导入数据文件名internet URL是否包含该协议类型“http://”“https://”

    输出参数

    全部折叠

    输出结构。结构是一种数据类型,使用称为字段的数据容器对相关数据进行分组。每个字段可以包含任何类型的数据。使用形式的点表示法访问结构中的数据structName.fieldName.有关结构的更多信息,请参见结构体

    提示

    • 使用XPath选择器指定要导入XML输入文档的哪些元素。该表提供了XPath选择器名称-值参数支持的XPath语法金宝appStructSelector

      选择操作 语法 例子 结果
      选择名称与要选择的节点匹配的节点,而不管其在文档中的位置。 在名称前加上两个斜杠(//).
      数据= readstruct(“music.xml”StructSelector =" / /合奏”
      音乐:“Jazz”乐队名:“Kool Katz”仪器仪表:[1×1 struct]
      在节点集中选择一个特定的节点。 在方括号中提供要选择的节点的索引([]).
      数据= readstruct(“music.xml”...StructSelector =..." / /合奏/仪器/工具[3]”
      Text: "Drums" drumkit: ["Bass drum" "Floor tom" "Snare drum"…“嗨帽子”“骑铙钹”
      指定操作的优先级。 在要首先求值的表达式周围添加圆括号。
      数据= readstruct(“students.xml”...StructSelector =“[4]/ /学生/名称”
      没有选择器'//Student/Name[4]'的节点可能是…在“students.xml”文件中找到。“StructSelector”必须…引用一个有效的节点。
      数据= readstruct(“students.xml”...StructSelector =”(/ /学生/名称)”[4]
      data = struct with fields: FirstNameAttribute: "Salim" LastNameAttribute: "Copeland"

    版本历史

    R2020b中介绍

    另请参阅