XSD的Delphi阅读器XML可选值0..n

老板老板

我已经使用XML向导从XSD文件生成了一个单元。

一切正常,但是我有一个可选节点,minOccurs="0"没有最大值。

<xs:complexType name="Party">
  <xs:sequence>
    <xs:element name="Nm" type="Max70Text" minOccurs="0"/>
  </xs:sequence>
</xs:complexType>

在Delphi代码中,我可以使用以下方法访问值:

LDocument.Aaa.Bbb.Items[0].Xxx.Nm

但是,如果<Nm>XML中有2个节点,该如何访问呢?生成的接口仅支持单个<Nm>节点。

IXMLParty = interface(IXMLNode)
  { Property Accessors }
  function Get_Nm: UnicodeString;
  procedure Set_Nm(Value: UnicodeString);
  { Methods & Properties }
  property Nm: UnicodeString read Get_Nm write Set_Nm;
end;
彼得·沃尔夫

您认为省略maxOccurs元素定义中属性将允许多个元素的假设<Nm>是错误的。为默认值maxOccurs,以及minOccurs1

要允许多个<Nm>元素,您必须maxOccurs="unbounded"在架构中明确指定(我将Max70Texttype替换为generic xs:string):

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified"
  xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="Party">
    <xs:sequence>
      <xs:element name="Nm" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

生成的接口是:

{ IXMLParty }

IXMLParty = interface(IXMLNodeCollection)
  { Property Accessors }
  function Get_Nm(Index: Integer): UnicodeString;
  { Methods & Properties }
  function Add(const Nm: UnicodeString): IXMLNode;
  function Insert(const Index: Integer; const Nm: UnicodeString): IXMLNode;
  property Nm[Index: Integer]: UnicodeString read Get_Nm; default;
end;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

RSS阅读器openStream()

来自分类Dev

如何从USB RFID阅读器阅读?

来自分类Dev

Java阅读器与流

来自分类Dev

WKWebView阅读器视图

来自分类Dev

xml阅读器打开文件,但仍给出“尝试读取之前加载数据”错误

来自分类Dev

XML阅读器变量VB.NET

来自分类Dev

C#xml阅读器,相同的元素名称

来自分类Dev

JSON阅读器期望值,但发现“功能”

来自分类Dev

Delphi组件和屏幕阅读器

来自分类Dev

Python:如何使用具有可选引号的csv阅读器拆分字符串

来自分类Dev

PDF阅读器问题

来自分类Dev

我的大文件的XML阅读器

来自分类Dev

在阅读器中获取JobParameters的值

来自分类Dev

PDF阅读器问题

来自分类Dev

UIWebView的“阅读器”版本

来自分类Dev

RSS阅读器是否在localhost上读取XML?

来自分类Dev

Java阅读器与流

来自分类Dev

替代信息阅读器

来自分类Dev

ASP.NET C#中的XML阅读器

来自分类Dev

忽略阅读器中的空值

来自分类Dev

CSV阅读器问题

来自分类Dev

我使用的阅读器是否错误,或者阅读器的值为空?

来自分类Dev

PHP中的XML(RSS阅读器)

来自分类Dev

PHP / XML feed阅读器从哪里开始?

来自分类Dev

Delphi组件和屏幕阅读器

来自分类Dev

Python:如何使用具有可选引号的csv阅读器拆分字符串

来自分类Dev

加载阅读器包

来自分类Dev

在 C# 中使用 XML 阅读器获取嵌套值

来自分类Dev

与 Google 阅读器同步的 RSS 阅读器?