文章 姚 鑫 · 七月 28, 2021 2m read
中的XMLWSDL中给出的模式完全匹配。
  • encoded 编码—默认情况下,此类中的web method使用SOAP编码的数据。也就是说,SOAP消息的中的XML使用了适合所使用的SOAP版本的SOAP编码,如以下规范所要求的:
  • 重要提示:对于手动创建的web服务,该关键字的默认值通常是合适的。

    0
    0 112
    文章 姚 鑫 · 七月 27, 2021 5m read

    第二十九章 类关键字 - PropertyClass

    向该类添加属性参数。

    用法

    要向该类添加属性参数,请使用以下语法:

    Class PropClass.MyClass Extends %RegisteredObject [ PropertyClass = PropClass.MyPropertyClass ] { //class members }
    

    其中·propertyclasslist·是下列之一:

    [ PropertyClass = PropClass.MyPropertyClass ]
    
    • 用逗号分隔的类名列表,用括号括起来。

    详情

    如果需要添加自定义属性参数,请执行以下操作:

    1. 定义并编译一个定义一个或多个类参数的类。例如:
    Class PropClass.MyPropertyClass
    {
    
    Parameter MYPARM As %String = "XYZ";
    
    }
    

    这些类参数在下一步中成为属性参数。

    1. 在定义属性的类中,指定PropertyClass关键字。

    对子类的影响

    子类继承这个关键字添加的自定义行为。如果子类为关键字指定了一个值,则该值会指定一个或多个为该类的属性指定参数的附加类。

    第三十章 类关键字 - ServerOnly

    指定此类是否被投影到Java客户端。

    用法

    要覆盖将类投影到Java客户端的默认方式,请使用以下语法:

    Class Sample.
    0
    0 160
    文章 Michael Lei · 七月 27, 2021 8m read

    以下步骤展示如何显示 /api/monitor 服务提供的指标列表示例。

    在上个帖子中,我概述了以 Prometheus 格式显示 IRIS 指标的服务。 该贴介绍了如何在容器中设置和运行 IRIS 预览版 2019.4,然后列出了指标。


    本帖假定您已安装 Docker。 如果未安装,现在就为您的平台安装吧 :)


    步骤 1. 下载并运行 docker 形式的 IRIS 预览版

    按照预览发行版的下载说明下载预览版许可证密钥IRIS Docker 映像。 例如,我选择了 InterSystems IRIS for Health 2019.4

    按照 Docker 容器中的 InterSystems 产品初见中的说明操作。 如果您熟悉容器,请跳转到标题为“下载 InterSystems IRIS Docker 映像”的部分。

    以下终端输出说明了我用来加载 docker 映像的过程。 docker load 命令可能需要几分钟的时间才能运行;

    $ pwd
    /Users/myhome/Downloads/iris_2019.4
    
    $ ls
    InterSystems IRIS for Health (Container)_2019.4.0_Docker(Ubuntu)_12-31-2019.ISCkey  irishealth-2019.4.0.379.0-docker.
    0
    0 395
    文章 姚 鑫 · 七月 26, 2021 3m read

    # <center> 第二十五章 类关键字 - NoExtent

    指定是否阻止编译器为此类生成继承类(如果不这样做的话)。

    # 用法

    要防止编译器为此类生成继承类,请使用以下语法:

    ```
    Class MyApp.MyClass [ NoExtent ]  { //class members }
    ```

    否则,省略此关键字或将单词`Not`放在关键字的前面。

    # 详解

    如果该关键字为真,则该类没有 `extent`。不能创建此类的实例。通常,这样的类会扩展或覆盖从`%Library.Persistent`继承的标准持久接口。

    # 对子类的影响

    此关键字不是继承的。

    # 默认

    如果省略此关键字,类可以有一个`extent`。

    # <center> 第二十六章 类关键字 - OdbcType

    指定通过`ODBC`或`JDBC`公开此数据类型时使用的类型。每个数据类型类都必须指定一个`ODBC`类型。此关键字仅适用于数据类型类。

    # 用法

    要指定通过ODBC或JDBC投影此数据类型时要使用的类型,请使用以下语法:

    ```
    Class MyApp.

    0
    0 147
    文章 姚 鑫 · 七月 25, 2021 3m read

    # <center> 第二十一章 类关键字 - Hidden

    指定此类是否隐藏(未在类引用中列出)。

    # 用法

    要隐藏类,请使用以下语法:

    ```java
    Class MyApp.Person [ Hidden ]  { //class members }
    ```
    否则,省略此关键字或将单词Not放在关键字的前面。

    # 详解

    如果一个类是隐藏的,当使用Visual Studio代码的对象脚本扩展时,它不会在类引用中列出,也不会在studio检查器的工作区窗口中列出,也不会在对象脚本资源管理器窗格中列出。(但是,如果在“打开”对话框中键入该类的名称,或者在使用VS Code - ObjectScript时将其保存到本地工作区,仍然可以在Studio中打开该类。)

    # 对子类的影响

    此关键字不是继承的。

    # 默认

    如果省略此关键字,则该类不会被隐藏。

    # <center> 第二十二章 类关键字 - Inheritance

    指定此类的超类的继承顺序。

    # 用法

    要为此类的超类指定继承顺序,请使用以下语法:

    ```java
    Class MyApp.

    0
    0 116
    文章 姚 鑫 · 七月 24, 2021 2m read

    第十七章 类关键字 - DependsOn

    指定此类应在编译器使其他(指定的)类可运行后编译。

    用法

    要指示类编译器应该在其他类可运行后编译此类,请使用以下语法:

    Class MyApp.MyClass [ DependsOn = classlist ]  
    { //class members }
    

    其中classlist是下列之一:

    • 类名
    [ DependsOn = MyApp.Class1 ]
    
    • 用逗号分隔的类名列表,用括号括起来。
    [ DependsOn = (MyApp.Class1,MyApp.Class2,...) ]
    

    详情

    此关键字指定类编译器应该在使指定的类可运行后编译此类。

    如果此类的编译使用方法生成器逻辑中的这些其他类,则此关键字非常有用。如果类包含调用其他类的初始表达式,这也很有用。

    此关键字仅影响编译顺序,不影响运行时行为。

    注意:DependsOn关键字只影响具有System关键字的公共值的类。

    此外,如果一个类有DependsOn=ClassA,那么它也有CompileAfter = ClassA也是多余的。

    对子类的影响

    这个关键字继承自所有超类。如果子类为关键字指定了一个值,该值指定了在子类被编译之前必须运行的附加类。

    默认

    默认情况下,不指定该关键字。

    第十八章 类关键字 - Deprecated

    0
    0 124
    文章 姚 鑫 · 七月 23, 2021 3m read

    # <center> 第十三章 类关键字 - ClientDataType

    指定将此数据类型投影到客户端技术时使用的客户端数据类型。仅适用于数据类型类。

    # 用法

    要指定将此数据类型投影到客户端技术时要使用的客户端数据类型,请使用以下语法:
    ```java
    Class MyApp.MyString [ ClientDataType = clienttype ]  
    { //class members }
    ```

    其中clienttype是下列之一:

    - `BIGINT`
    - `BINARY`
    - `BINARYSTREAM`
    - `BOOLEAN`
    - `CHARACTERSTREAM`
    - `CURRENCY`
    - `DATE`
    - `DECIMAL`
    - `DOUBLE`
    - `FDATE`
    - `FTIMESTAMP`
    - `HANDLE`
    - `INTEGER`
    - `LIST`
    - `LONGVARCHAR`
    - `NUMERIC`
    - `STATUS`
    - `TIME`
    - `TIMESTAMP`
    - `VARCHAR` (默认)

    # 详解

    此关键字指定将此类投影到客户端技术时使用的客户端数据类型。每个数据类型类都必须指定一个客户端数据类型。

    # 对子类的影响

    这个关键字是从主超类继承的。子类可以覆盖关键字的值。

    # 默认

    默认的客户端数据类型是`VARCHAR`。

    0
    0 134
    文章 姚 鑫 · 七月 22, 2021 4m read

    第九章 触发器定义

    描述触发器定义的结构。

    介绍

    触发器是在SQL中发生特定事件时执行的代码段。InterSystems IRIS支持基于执行INSERTUPDATEDELETE命令的触发器。根据触发器定义,指定的代码将在相关命令执行之前或之后立即执行。每个事件可以有多个触发器,只要它们被分配了执行顺序。

    可以向持久类添加触发器定义。它们在其他类中没有意义。

    详情

    触发器定义具有以下结构:

    /// description 
    Trigger name [ keyword_list ]  
    { implementation }
    
    • description 描述(可选)旨在显示在“类参考”中。默认情况下,描述为空白。
    • name(必需)是触发器的名称。这必须是有效的类成员名称,并且不能与任何其他类成员名称冲突。
    • keyword_list(必需)是以逗号分隔的关键字列表,用于进一步定义触发器。
    • implementation 实现(必需)是零行或多行ObjectScript代码,用于定义触发触发器时要执行的代码。
    0
    0 229
    文章 姚 鑫 · 七月 21, 2021 5m read

    第五章 参数定义

    描述参数定义的结构。

    介绍

    参数定义定义了一个给定类的所有对象都可用的常数值。创建类定义时(或在编译前的任何时候),可以设置其类参数的值。默认情况下,每个参数的值都是空字符串,但是可以在参数定义中指定一个非空值。在编译时,为类的所有实例建立参数值。除了极少数例外,该值不能在运行时更改。

    详解

    参数定义具有以下结构:

    /// description 
    Parameter name As parameter_type [ keyword_list ] = value ;
    
    • description描述(可选)旨在显示在“类参考”中。默认情况下,描述为空白。
    • name(必需)是参数的名称。这必须是有效的类成员名称,并且不能与任何其他类成员名称冲突。
    • parameter_type(可选)指定参数的用户界面类型,由Studio用于在检查器内为参数提供输入验证。

    这不是类名;参见下一节。在大多数情况下,编译器会忽略这个关键字。

    如果省略参数类型,也要省略单词As

    • value(可选)指定参数的值。如果省略值,也要省略等号=
    • keyword_list(可选)是以逗号分隔的关键字列表,用于进一步定义参数。

    如果省略此列表,也要省略方括号。

    参数的允许类型

    参数类型parameter_type 选项可以是下列值之一:

    • BOOLEAN — true(1)或false(0)值。

    0
    0 167
    文章 姚 鑫 · 七月 20, 2021 6m read

    第一章 类定义

    描述类定义的结构。

    介绍

    一个类可以包含熟悉的类元素,如属性、方法和参数(在其他类语言中称为常量)。它还可以包含通常不在类中定义的项,包括触发器、查询和索引。

    详细

    类定义具有以下结构:

    Import import_ppackage_list  
    Include include_code  
    IncludeGenerator include_generator_code  
    
    /// description 
    Class package.shortclassname Extends superclass_list [ class_keyword_list ] 
    {  
        Class_members
    }
    
    • import_package_list(可选)指定类从中导入的任何包的名称。会影响编译器解析短类名的方式。

    如果指定了此选项,则它可以是单个包的名称,也可以是多个包的逗号分隔列表,用括号括起来。

    如果import_package_list为空,则不要在类定义的开头添加import行。

    注意:如果一个类导入任何包,该类不会自动导入用户包。

    导入的包继承自所有超类。如果一个子类指定了一个或多个导入包,这些导入包将被添加到由超类定义的任何导入包中。

    • include_code(可选)指定 include (.inc)。编译此类时使用的文件。
    0
    0 171
    文章 姚 鑫 · 七月 18, 2021 4m read

    第七章 将文件内容复制到另外文件

    示例

    本例显示了一个使用本文前面介绍的几个%Library.File方法的样例类。

    在示例类Demo.FileDemo中,ProcessFile()方法接受输入文件和输出文件,并调用SetUpInputFile()SetUpOutputFile()打开文件,一个用于读取,另一个用于写入。然后,它逐行读取输入文件,并调用ProcessLine()对每行的内容执行一个或多个替换,将每行的新内容写入输出文件。

    /// 设置输入文件
    /// 1. 创建文件对象
    /// 2. 打开文件阅读
    /// 3. 返回文件对象的句柄
    ClassMethod SetUpInputFile(filename As %String) As %File
    {
        Set fileObj = ##class(%File).%New(filename)
        Set status = fileObj.Open("RU")
        if $$$ISERR(status) { 
            do $system.Status.DisplayError(status) 
            quit $$$NULLOREF
        }
        quit fileObj
    }
    
    /// 设置输出文件
    /// 1. 为文件创建目录结构
    /// 2. 创建文件对象
    /// 3.
    0
    0 219
    文章 姚 鑫 · 七月 17, 2021 4m read

    第六章 使用%File对象

    如果想要操作文件本身,需要使用%Library.File%New()方法实例化%File对象。该类还提供了允许使用该文件的实例方法。

    注意:本节提供了几个使用%File对象的示例,以供说明。

    对于简单的文件读写,使用%Stream.FileCharacter和%Stream.FileBinary。因为它们提供了额外的功能,例如,以正确的模式自动打开文件。

    创建%File对象的实例

    要使用文件,需要使用%New()方法实例化表示该文件的%File对象。该文件可能已经存在,也可能不存在于磁盘上。

    以下示例在默认目录中为文件export.xml实例化一个%File对象。

    set fileObj = ##class(%File).%New("export.xml")
    

    打开和关闭文件

    实例化%File对象后,需要使用open()方法打开文件,以读取或写入该文件:

    USER>set status = fileObj.Open()
    
    USER>write status
    1
    

    使用Close()方法关闭文件:

    USER>do fileObj.Close()
    

    检查%File对象的属性

    一旦实例化了文件,就可以直接检查文件的属性。

    USER>write fileObj.Name
    export.xml
    USER>write fileObj.
    0
    0 241
    文章 姚 鑫 · 七月 16, 2021 4m read

    第五章 使用文件

    使用文件

    %Library.File类提供了几个类方法,允许对文件执行各种操作。

    复制文件

    若要复制文件,请使用CopyFile()方法,该方法返回一个布尔值来指示成功或失败。

    此方法采用四个参数:

    1. from 从—指定源文件的名称。
    2. to至—指定目标文件的名称。
    3. pDeleteBeforeCopy —指定在执行复制之前是否删除目标文件(如果存在)。默认值为0。
    4. return 返回—输出参数。如果为负,则包含操作系统返回的错误代码,以防方法失败

    下面的第一个示例将目录e:\temp中的文件old.txt复制到new.txt。第二个示例将相同的文件复制到默认目录中的new.txt

    DHC-APP>write ##class(%File).CopyFile("e:\temp\old.txt", "e:\temp\new.txt", 0, .return)
    1
    DHC-APP>write ##class(%File).CopyFile("e:\temp\old.txt", "new.txt", 0, .return)
    1
    

    最后一个示例失败,Windows错误代码为2,或“找不到文件”

    DHC-APP>write ##class(%File).CopyFile("foo.txt", "new.txt", 0, .
    0
    0 193
    文章 姚 鑫 · 七月 15, 2021 4m read

    第四章 使用目录

    使用目录

    %Library。File类提供了几个类方法,允许对目录执行各种操作。

    创建目录

    若要创建目录,请使用CreateDirectory()方法,该方法返回一个布尔值来指示成功或失败。这个方法需要两个参数。第一个参数是要创建的目录的名称。第二个参数是输出参数。如果为负,它包含操作系统返回的错误代码,以防方法失败。

    如果e:\temp已经存在,以下命令将失败,并显示Windows系统错误代码183,这意味着“当文件已经存在时,无法创建该文件。”

    DHC-APP>write ##class(%File).CreateDirectory("e:\temp", .return)
    0
    DHC-APP>w return
    -183
    

    如果e:\temp已经存在,但e:\temp\test不存在,则以下命令会失败,因为CreateDirectory()最多创建给定目录路径中的最后一个目录。所以返回的Windows系统错误代码是3,或者“系统找不到指定的路径。”

    DHC-APP>write ##class(%File).CreateDirectory("e:\temp\test\this", .return)
    0
    DHC-APP>w return
    -183
    

    以下示例使用Windows系统代码0或“操作成功完成”成功完成

    DHC-APP>write ##class(%File).
    0
    0 200
    问题 Crys · 七月 14, 2021

    刚才好像发了一遍没成功

    试用IRIS,关闭了workspace之后;再打开、没有project. 只能从打开最近的workspace中找,怎么回事噢?哈哈哈哈哈

    0
    2 157
    文章 姚 鑫 · 七月 14, 2021 6m read

    第三章 处理文件和目录名

    %Library.File类提供了几个可用于处理文件名和目录名的类方法。在大多数情况下,文件和目录不需要存在即可使用这些方法。

    获取文件名和目录名

    %Library.File类提供可用于获取部分文件名和目录名的类方法。

    在给定完整路径名的情况下,使用GetDirectory()GetFilename()分别获取目录和短文件名。对于此方法,不允许使用部分目录名。

    DHC-APP>set filename = "e:\temp\config.txt"
     
    DHC-APP>write ##class(%File).GetDirectory(filename)
    E:\temp\
    DHC-APP>write ##class(%File).GetFilename(filename)
    config.txt
    

    在给定文件名的情况下,使用CanonicalFilename()从根目录获取完整路径:

    DHC-APP>set filename = "cache.dat"
     
    DHC-APP>write ##class(%File).CanonicalFilename(filename)
    e:\dthealth\db\dthis\data\cache.dat
    DHC-APP>write ##class(%File).CanonicalFilename("foo.
    0
    0 193
    文章 姚 鑫 · 七月 13, 2021 6m read

    第二章 使用文件和目录属性和属性

    %Library.File类还提供了许多类方法,可以使用这些方法来获取有关文件和目录的信息,或者查看或设置它们的属性和属性。

    检查文件和目录是否存在

    要确定给定文件是否存在,请使用Existes()方法并指定文件名作为参数。例如:

    DHC-APP>write ##class(%File).Exists("e:\temp\")
    1
    

    同样,要找出给定目录是否存在,请使用DirectoryExists()方法,并将该目录指定为参数。例如:

    DHC-APP>write ##class(%File).DirectoryExists("e:\temp")
    1
    

    如前所述,这些方法在Unix上将文件或目录名视为区分大小写,但在Windows上不区分大小写。此外,如果指定部分文件名或目录名,则该方法引用的文件或目录相对于包含正在使用的命名空间的默认全局数据库的目录。例如:

    DHC-APP>write ##class(%File).Exists("cache.dat")
    1
    

    查看和设置文件和目录权限

    %Library.File类提供了许多类方法,可以使用这些方法查看或设置文件或目录的权限。

    查看文件或目录是只读的还是可写的

    给定文件或目录名,如果文件或目录是只读的,ReadOnly()方法返回1,否则返回0:

    DHC-APP>write ##class(%File).
    1
    0 224
    文章 Lele Yang · 七月 13, 2021 6m read

    与Windows上默认安装为服务随机自启动不同,我们在Linux上安装完InterSystems IRIS后,默认是没有配置系统服务的,需要做手动配置。本文提供使用systemd方式来配置InterSystems IRIS服务随机自启动的简单示例,供大家参考。

    假设我们已经安装了InterSystems IRIS产品,安装完成后您可以通过iris list来来查看实例信息,包括安装路径,如:"/intersystems/iris"

    [root@RHEL8-64-001 ~]# iris list
    
    Configuration 'IRIS'   (default)
      directory:    /intersystems/iris
      versionid:    2021.2.0L.546.0
      datadir:      /intersystems/iris
      conf file:    iris.cpf  (SuperServer port = 51773, WebServer = 52773)
      status:       running, since Mon May 31 05:03:09 2021
      state:        ok
      product:      InterSystems IRIS

    在安装完成后,用以下方式搜索不到iris.

    0
    0 290
    文章 姚 鑫 · 七月 12, 2021 5m read

    第一章 查询目录和驱动器

    %Library.File(简称%File)为处理文件和目录提供了广泛的API。本文将介绍该API的主要功能。有关属性、方法和查询的规范列表,请参见类参考。

    注意:如果指定了部分文件名或目录名,这些方法中的大多数都引用的项相对于包含正在使用的命名空间的默认全局数据库的目录。该目录在本文中称为“默认目录”。这条规则的任何例外都在文章中注明。

    此外,仅当基础操作系统将文件名和目录名视为区分大小写时,这些方法才会将文件名或目录名视为区分大小写。也就是说,文件或目录名在Unix上区分大小写,但在Windows上不区分大小写。

    查询目录和驱动器

    列出目录的内容

    FileSet类查询列出目录的内容。此查询按顺序接受以下参数:

    1. directory — 指定要检查的目录的名称。
    2. wildcards 通配符 — 指定要匹配的文件名模式(如果有)。
    3. sortby 排序依据 — 指定如何对结果进行排序。使用以下值之一:
    • Name 名称—文件的名称(默认)
    • Type 类型—项目类型
    • DateCreated 创建日期—创建文件的日期和时间
    • DateModified 日期修改—文件上次修改的日期和时间
    • Size 大小—文件大小
    1. includedirs —指定如何处理给定目录中的目录。如果此参数为真(1),查询将返回任何文件之前的所有目录,并且目录名忽略通配符参数。
    0
    0 152
    公告 Jeff Liu · 七月 12, 2021

    嗨,开发者们, 

    你准备好迎接新的挑战了吗? 我们很高兴地宣布第一届InterSystems技术文章写作比赛:

    🏆 InterSystems技术文章写作大赛 🏆

    从2021年7月15日至8月15日,写一篇与InterSystems技术有关的任何主题的文章!

    每个人都有奖品: 在此期间,每个在DC上发表文章的人都将获得一个特别的奖品包!

    大奖: Apple iPad

    参加我们的新比赛,你的内容将被超过55K的月度读者看到! 详情如下。

    0
    0 280
    文章 姚 鑫 · 七月 10, 2021 6m read
    0
    0 256
    文章 姚 鑫 · 七月 9, 2021 6m read

    第三十二章 XML基础知识概念

    attribute

    以下形式的名值对:

    ID="QD5690"
    

    属性位于元素中,如下所示,一个元素可以有任意数量的属性。

    <Patient ID="QD5690">Cromley,Marcia N.</Patient>
    

    CDATA区域

    表示不应该验证的文本,如下所示:

    <myelementname><![CDATA[ 
    Non-validated data goes here.  
    You can even have stray "<" or ">" symbols in it. 
    ]]></myelementname>
    

    一个CDATA(字符数据)区段不能包含字符串]]>,因为这个字符串标志着区段的结束。 这也意味着CDATA区段不能嵌套。

    注意,CDATA部分的内容必须符合为XML文档指定的编码,XML文档的其余部分也是如此。

    comment

    不是XML文档主数据的一部分的插入说明。 注释是这样的:

    <!--Output for the class: GXML.PersonNS7-->
    

    content model

    对XML元素的可能内容的抽象描述。

    0
    0 227
    文章 姚 鑫 · 七月 8, 2021 2m read

    第三十一章 检查命名空间和类

    %XML.Namespaces提供了两个类方法,可用于检查XML命名空间及其包含的类:

    GetNextClass()

    classmethod GetNextClass(namespace As %String, 
                class As %String) as %String
    

    返回给定XML命名空间中给定类之后的下一个类(按字母顺序)。当没有更多的类时,此方法返回NULL

    GetNextNamespace()

    classmethod GetNextNamespace(namespace As %String) as %String
    

    返回给定命名空间之后的下一个命名空间(按字母顺序)。当没有更多的命名空间时,此方法返回NULL

    在这两种情况下,只考虑当前的InterSystems IRIS命名空间。此外,映射的类也会被忽略。

    例如,以下方法列出当前InterSystems IRIS命名空间的XML命名空间及其类:

    ClassMethod WriteNamespacesAndClasses()
    {
      Set ns=""
      Set ns=##class(%XML.Namespaces).GetNextNamespace(ns)
    
      While ns '=""
      {
        Write !
    0
    0 159
    文章 Claire Zheng · 七月 8, 2021 3m read

            2021年7月9日-11日,2021(16th) 中国卫生信息技术/健康医疗大数据应用交流大会暨软硬件与健康医疗产品展览会(CHITEC)在武汉国际博览中心(湖北省武汉市汉阳区鹦鹉大道619号)盛大召开,欢迎莅临InterSystems展位A6-16,了解备受瞩目的InterSystems IRIS医疗版互联互通套件

    1
    1 628
    文章 姚 鑫 · 七月 7, 2021 5m read

    第三十章 从类生成XML架构

    本章介绍如何使用%XML.Schema从启用了XML的类生成XML架构。

    概述

    要生成为同一XML命名空间中的多个类定义类型的完整架构,请使用%XML.Schema构建架构,然后使用%XML.Writer为其生成输出。

    从多个类构建架构

    要构建XML架构,请执行以下操作:

    1. 创建%XML.Schema实例。
    2. 可以选择设置实例的属性:
    • 若要为任何其他未分配的类型指定命名空间,请指定DefaultNamespace属性。默认值为NULL
    • 默认情况下,类及其属性的类文档包含在模式的元素中。 要禁用此功能,请将IncludeDocumentation属性指定为0。

    注意:必须在调用AddSchemaType()方法之前设置这些属性。

    1. 调用实例的AddSchemaType()方法。
    0
    0 191
    文章 姚 鑫 · 七月 6, 2021 9m read

    第二十九章 从XML架构生成类

    Studio提供了一个向导,该向导读取XML模式(从文件或URL),并生成一组支持XML的类,这些类对应于模式中定义的类型。 所有的类都扩展%XML.Adaptor。 指定一个包来包含类,以及控制类定义细节的各种选项。

    向导还可以作为类方法使用,也可以使用该类方法。 在内部,SOAP向导在读取WSDL文档并生成web客户端或web服务时使用此方法;

    注意:使用的任何XML文档的XML声明都应该指明该文档的字符编码,并且文档应该按照声明的方式进行编码。如果未声明字符编码,InterSystems IRIS将使用本书前面的“输入和输出的字符编码”中描述的默认值。如果这些默认值不正确,请修改XML声明,使其指定实际使用的字符集。

    使用向导

    要使用XML架构向导,请执行以下操作:

    1. 选择 Tools > Add-Ins > XML Schema Wizard.

    image

    1. 在第一个屏幕上,指定要使用的XML模式。 做以下其中一项:
    • 对于模式文件Schema File,选择Browse 以选择XML模式文件。
    • 对于URL,指定模式的URL。

    image

    1. 选择Next。

    下一个屏幕显示模式,以便可以验证选择了正确的模式。 image

    1. 可选择以下选项:
    • 保留空类Keep Empty Classes,它指定是否保留没有属性的未使用的类。 如果选择此选项,则不会在向导结束时删除此类; 否则,将删除它们。
    0
    0 228