xml - 德尔福 2007 xsd 导入

标签 xml delphi xsd delphi-2007

我要导入的文件是here . 导入向导后,当我尝试编译我的项目时,Delphi 说

Identifier redeclared: 'IXMLNodeList'.

我试图删除重新声明的“IXMLNodeList”之一,但这次 Delphi 说

Type 'IXMLNode' is not yet completely defined.

同一个 xsd 文件可以用 xsd.exe(.Net Framework 的一个工具)转换并用 Visual Studio 2013 构建。

这是一个错误吗?还是我做错了什么? 还有其他方法可以生成 *.pas 文件吗?

使用 Delphi 2007 生成的 *.pas 文件。(由于字符限制为 30000,因此删除了实现部分)

{**********************************************}
{                                              }
{             XML Data Binding                 }
{                                              }
{         Generated on: 27.8.2015 12:46:19     }
{       Generated from: D:\temp\testData.xsd   }
{   Settings stored in: D:\temp\testData.xdb   }
{                                              }
{**********************************************}

unit testData;

interface

uses xmldom, XMLDoc, XMLIntf;

type

{ Forward Decls }

  IXMLArrayDim = interface;
  IXMLHeader = interface;
  IXMLSymbolConfigObject = interface;
  IXMLProjectInfo = interface;
  IXMLSymbolconfiguration = interface;
  IXMLTypeList = interface;
  IXMLTypeSimple = interface;
  IXMLTypeSimpleList = interface;
  IXMLTypeUserDef = interface;
  IXMLTypeUserDefList = interface;
  IXMLUserDefElement = interface;
  IXMLTypeArray = interface;
  IXMLTypeArrayList = interface;
  IXMLNodeList = interface;
  IXMLNode = interface;
  IXMLNodeList = interface;

{ IXMLArrayDim }

  IXMLArrayDim = interface(IXMLNode)
    ['{B668E24B-E08D-4E8A-9687-8D50FE3141DA}']
    { Property Accessors }
    function Get_Minrange: Integer;
    function Get_Maxrange: Integer;
    procedure Set_Minrange(Value: Integer);
    procedure Set_Maxrange(Value: Integer);
    { Methods & Properties }
    property Minrange: Integer read Get_Minrange write Set_Minrange;
    property Maxrange: Integer read Get_Maxrange write Set_Maxrange;
  end;

{ IXMLHeader }

  IXMLHeader = interface(IXMLNode)
    ['{679233BE-93E7-42C9-B429-CF8F8B81A2BD}']
    { Property Accessors }
    function Get_Version: WideString;
    function Get_SymbolConfigObject: IXMLSymbolConfigObject;
    function Get_ProjectInfo: IXMLProjectInfo;
    procedure Set_Version(Value: WideString);
    { Methods & Properties }
    property Version: WideString read Get_Version write Set_Version;
    property SymbolConfigObject: IXMLSymbolConfigObject read Get_SymbolConfigObject;
    property ProjectInfo: IXMLProjectInfo read Get_ProjectInfo;
  end;

{ IXMLSymbolConfigObject }

  IXMLSymbolConfigObject = interface(IXMLNode)
    ['{FEBFF4CE-1B1F-4894-A90A-5C976FA5541B}']
    { Property Accessors }
    function Get_Version: WideString;
    procedure Set_Version(Value: WideString);
    { Methods & Properties }
    property Version: WideString read Get_Version write Set_Version;
  end;

{ IXMLProjectInfo }

  IXMLProjectInfo = interface(IXMLNode)
    ['{5D629B4B-8BB7-4627-A2D0-9B6ABD037F79}']
    { Property Accessors }
    function Get_Name: WideString;
    function Get_Devicename: WideString;
    function Get_Appname: WideString;
    procedure Set_Name(Value: WideString);
    procedure Set_Devicename(Value: WideString);
    procedure Set_Appname(Value: WideString);
    { Methods & Properties }
    property Name: WideString read Get_Name write Set_Name;
    property Devicename: WideString read Get_Devicename write Set_Devicename;
    property Appname: WideString read Get_Appname write Set_Appname;
  end;

{ IXMLSymbolconfiguration }

  IXMLSymbolconfiguration = interface(IXMLNode)
    ['{B3CA7842-0593-485A-9B70-A17210F3DE47}']
    { Property Accessors }
    function Get_Header: IXMLHeader;
    function Get_TypeList: IXMLTypeList;
    function Get_NodeList: IXMLNodeList;
    { Methods & Properties }
    property Header: IXMLHeader read Get_Header;
    property TypeList: IXMLTypeList read Get_TypeList;
    property NodeList: IXMLNodeList read Get_NodeList;
  end;

{ IXMLTypeList }

  IXMLTypeList = interface(IXMLNode)
    ['{4F506F8A-9093-4B65-B3F6-CE04F4AA2B6A}']
    { Property Accessors }
    function Get_TypeSimple: IXMLTypeSimpleList;
    function Get_TypeUserDef: IXMLTypeUserDefList;
    function Get_TypeArray: IXMLTypeArrayList;
    { Methods & Properties }
    property TypeSimple: IXMLTypeSimpleList read Get_TypeSimple;
    property TypeUserDef: IXMLTypeUserDefList read Get_TypeUserDef;
    property TypeArray: IXMLTypeArrayList read Get_TypeArray;
  end;

{ IXMLTypeSimple }

  IXMLTypeSimple = interface(IXMLNode)
    ['{99ACCF81-AE73-4848-96D1-465B02B09732}']
    { Property Accessors }
    function Get_Name: WideString;
    function Get_Size: Integer;
    function Get_Swapsize: Integer;
    function Get_Typeclass: WideString;
    function Get_Iecname: WideString;
    function Get_Bitoffset: Integer;
    procedure Set_Name(Value: WideString);
    procedure Set_Size(Value: Integer);
    procedure Set_Swapsize(Value: Integer);
    procedure Set_Typeclass(Value: WideString);
    procedure Set_Iecname(Value: WideString);
    procedure Set_Bitoffset(Value: Integer);
    { Methods & Properties }
    property Name: WideString read Get_Name write Set_Name;
    property Size: Integer read Get_Size write Set_Size;
    property Swapsize: Integer read Get_Swapsize write Set_Swapsize;
    property Typeclass: WideString read Get_Typeclass write Set_Typeclass;
    property Iecname: WideString read Get_Iecname write Set_Iecname;
    property Bitoffset: Integer read Get_Bitoffset write Set_Bitoffset;
  end;

{ IXMLTypeSimpleList }

  IXMLTypeSimpleList = interface(IXMLNodeCollection)
    ['{9FF4D34E-53A0-4C6E-A123-15DC9ECB86D9}']
    { Methods & Properties }
    function Add: IXMLTypeSimple;
    function Insert(const Index: Integer): IXMLTypeSimple;
    function Get_Item(Index: Integer): IXMLTypeSimple;
    property Items[Index: Integer]: IXMLTypeSimple read Get_Item; default;
  end;

{ IXMLTypeUserDef }

  IXMLTypeUserDef = interface(IXMLNodeCollection)
    ['{9FE7B6CE-0B86-499E-A039-A0939B5DE3A5}']
    { Property Accessors }
    function Get_Name: WideString;
    function Get_Size: Integer;
    function Get_Nativesize: Integer;
    function Get_Typeclass: WideString;
    function Get_Iecname: WideString;
    function Get_UserDefElement(Index: Integer): IXMLUserDefElement;
    procedure Set_Name(Value: WideString);
    procedure Set_Size(Value: Integer);
    procedure Set_Nativesize(Value: Integer);
    procedure Set_Typeclass(Value: WideString);
    procedure Set_Iecname(Value: WideString);
    { Methods & Properties }
    function Add: IXMLUserDefElement;
    function Insert(const Index: Integer): IXMLUserDefElement;
    property Name: WideString read Get_Name write Set_Name;
    property Size: Integer read Get_Size write Set_Size;
    property Nativesize: Integer read Get_Nativesize write Set_Nativesize;
    property Typeclass: WideString read Get_Typeclass write Set_Typeclass;
    property Iecname: WideString read Get_Iecname write Set_Iecname;
    property UserDefElement[Index: Integer]: IXMLUserDefElement read Get_UserDefElement; default;
  end;

{ IXMLTypeUserDefList }

  IXMLTypeUserDefList = interface(IXMLNodeCollection)
    ['{52B0116E-85CB-4299-988F-0EDA565597FA}']
    { Methods & Properties }
    function Add: IXMLTypeUserDef;
    function Insert(const Index: Integer): IXMLTypeUserDef;
    function Get_Item(Index: Integer): IXMLTypeUserDef;
    property Items[Index: Integer]: IXMLTypeUserDef read Get_Item; default;
  end;

{ IXMLUserDefElement }

  IXMLUserDefElement = interface(IXMLNode)
    ['{09C1780A-D3BB-4EF0-ABB8-87C3C2A7D164}']
    { Property Accessors }
    function Get_Type_: WideString;
    function Get_Iecname: WideString;
    function Get_Byteoffset: Integer;
    procedure Set_Type_(Value: WideString);
    procedure Set_Iecname(Value: WideString);
    procedure Set_Byteoffset(Value: Integer);
    { Methods & Properties }
    property Type_: WideString read Get_Type_ write Set_Type_;
    property Iecname: WideString read Get_Iecname write Set_Iecname;
    property Byteoffset: Integer read Get_Byteoffset write Set_Byteoffset;
  end;

{ IXMLTypeArray }

  IXMLTypeArray = interface(IXMLNodeCollection)
    ['{5B1E6A12-D05F-4B0D-B7DF-4CAE0F51D0F7}']
    { Property Accessors }
    function Get_Name: WideString;
    function Get_Size: Integer;
    function Get_Nativesize: Integer;
    function Get_Typeclass: WideString;
    function Get_Basetype: WideString;
    function Get_Iecname: WideString;
    function Get_ArrayDim(Index: Integer): IXMLArrayDim;
    procedure Set_Name(Value: WideString);
    procedure Set_Size(Value: Integer);
    procedure Set_Nativesize(Value: Integer);
    procedure Set_Typeclass(Value: WideString);
    procedure Set_Basetype(Value: WideString);
    procedure Set_Iecname(Value: WideString);
    { Methods & Properties }
    function Add: IXMLArrayDim;
    function Insert(const Index: Integer): IXMLArrayDim;
    property Name: WideString read Get_Name write Set_Name;
    property Size: Integer read Get_Size write Set_Size;
    property Nativesize: Integer read Get_Nativesize write Set_Nativesize;
    property Typeclass: WideString read Get_Typeclass write Set_Typeclass;
    property Basetype: WideString read Get_Basetype write Set_Basetype;
    property Iecname: WideString read Get_Iecname write Set_Iecname;
    property ArrayDim[Index: Integer]: IXMLArrayDim read Get_ArrayDim; default;
  end;

{ IXMLTypeArrayList }

  IXMLTypeArrayList = interface(IXMLNodeCollection)
    ['{44BC02D7-A6E9-4E4E-8FC1-F4D7481CBCF4}']
    { Methods & Properties }
    function Add: IXMLTypeArray;
    function Insert(const Index: Integer): IXMLTypeArray;
    function Get_Item(Index: Integer): IXMLTypeArray;
    property Items[Index: Integer]: IXMLTypeArray read Get_Item; default;
  end;

{ IXMLNodeList }

  IXMLNodeList = interface(IXMLNodeCollection)
    ['{A9F27BF3-5720-4687-931A-B4C7AF13919A}']
    { Property Accessors }
    function Get_Node(Index: Integer): IXMLNode;
    { Methods & Properties }
    function Add: IXMLNode;
    function Insert(const Index: Integer): IXMLNode;
    property Node[Index: Integer]: IXMLNode read Get_Node; default;
  end;

{ IXMLNode }

  IXMLNode = interface(IXMLNode)
    ['{69BBFB83-04B8-47D0-9A64-F7E6DDE649F7}']
    { Property Accessors }
    function Get_Name: WideString;
    function Get_Type_: WideString;
    function Get_Access: WideString;
    function Get_Area: Integer;
    function Get_Offset: Integer;
    function Get_Directaddress: WideString;
    function Get_Node: IXMLNodeList;
    function Get_Comment: WideString;
    procedure Set_Name(Value: WideString);
    procedure Set_Type_(Value: WideString);
    procedure Set_Access(Value: WideString);
    procedure Set_Area(Value: Integer);
    procedure Set_Offset(Value: Integer);
    procedure Set_Directaddress(Value: WideString);
    procedure Set_Comment(Value: WideString);
    { Methods & Properties }
    property Name: WideString read Get_Name write Set_Name;
    property Type_: WideString read Get_Type_ write Set_Type_;
    property Access: WideString read Get_Access write Set_Access;
    property Area: Integer read Get_Area write Set_Area;
    property Offset: Integer read Get_Offset write Set_Offset;
    property Directaddress: WideString read Get_Directaddress write Set_Directaddress;
    property Node: IXMLNodeList read Get_Node;
    property Comment: WideString read Get_Comment write Set_Comment;
  end;

{ IXMLNodeList }

  IXMLNodeList = interface(IXMLNodeCollection)
    ['{0E766622-8449-47F9-AD37-444847F37385}']
    { Methods & Properties }
    function Add: IXMLNode;
    function Insert(const Index: Integer): IXMLNode;
    function Get_Item(Index: Integer): IXMLNode;
    property Items[Index: Integer]: IXMLNode read Get_Item; default;
  end;

{ Forward Decls }

  TXMLArrayDim = class;
  TXMLHeader = class;
  TXMLSymbolConfigObject = class;
  TXMLProjectInfo = class;
  TXMLSymbolconfiguration = class;
  TXMLTypeList = class;
  TXMLTypeSimple = class;
  TXMLTypeSimpleList = class;
  TXMLTypeUserDef = class;
  TXMLTypeUserDefList = class;
  TXMLUserDefElement = class;
  TXMLTypeArray = class;
  TXMLTypeArrayList = class;
  TXMLNodeList = class;
  TXMLNode = class;
  TXMLNodeList = class;

{ TXMLArrayDim }

  TXMLArrayDim = class(TXMLNode, IXMLArrayDim)
  protected
    { IXMLArrayDim }
    function Get_Minrange: Integer;
    function Get_Maxrange: Integer;
    procedure Set_Minrange(Value: Integer);
    procedure Set_Maxrange(Value: Integer);
  end;

{ TXMLHeader }

  TXMLHeader = class(TXMLNode, IXMLHeader)
  protected
    { IXMLHeader }
    function Get_Version: WideString;
    function Get_SymbolConfigObject: IXMLSymbolConfigObject;
    function Get_ProjectInfo: IXMLProjectInfo;
    procedure Set_Version(Value: WideString);
  public
    procedure AfterConstruction; override;
  end;

{ TXMLSymbolConfigObject }

  TXMLSymbolConfigObject = class(TXMLNode, IXMLSymbolConfigObject)
  protected
    { IXMLSymbolConfigObject }
    function Get_Version: WideString;
    procedure Set_Version(Value: WideString);
  end;

{ TXMLProjectInfo }

  TXMLProjectInfo = class(TXMLNode, IXMLProjectInfo)
  protected
    { IXMLProjectInfo }
    function Get_Name: WideString;
    function Get_Devicename: WideString;
    function Get_Appname: WideString;
    procedure Set_Name(Value: WideString);
    procedure Set_Devicename(Value: WideString);
    procedure Set_Appname(Value: WideString);
  end;

{ TXMLSymbolconfiguration }

  TXMLSymbolconfiguration = class(TXMLNode, IXMLSymbolconfiguration)
  protected
    { IXMLSymbolconfiguration }
    function Get_Header: IXMLHeader;
    function Get_TypeList: IXMLTypeList;
    function Get_NodeList: IXMLNodeList;
  public
    procedure AfterConstruction; override;
  end;

{ TXMLTypeList }

  TXMLTypeList = class(TXMLNode, IXMLTypeList)
  private
    FTypeSimple: IXMLTypeSimpleList;
    FTypeUserDef: IXMLTypeUserDefList;
    FTypeArray: IXMLTypeArrayList;
  protected
    { IXMLTypeList }
    function Get_TypeSimple: IXMLTypeSimpleList;
    function Get_TypeUserDef: IXMLTypeUserDefList;
    function Get_TypeArray: IXMLTypeArrayList;
  public
    procedure AfterConstruction; override;
  end;

{ TXMLTypeSimple }

  TXMLTypeSimple = class(TXMLNode, IXMLTypeSimple)
  protected
    { IXMLTypeSimple }
    function Get_Name: WideString;
    function Get_Size: Integer;
    function Get_Swapsize: Integer;
    function Get_Typeclass: WideString;
    function Get_Iecname: WideString;
    function Get_Bitoffset: Integer;
    procedure Set_Name(Value: WideString);
    procedure Set_Size(Value: Integer);
    procedure Set_Swapsize(Value: Integer);
    procedure Set_Typeclass(Value: WideString);
    procedure Set_Iecname(Value: WideString);
    procedure Set_Bitoffset(Value: Integer);
  end;

{ TXMLTypeSimpleList }

  TXMLTypeSimpleList = class(TXMLNodeCollection, IXMLTypeSimpleList)
  protected
    { IXMLTypeSimpleList }
    function Add: IXMLTypeSimple;
    function Insert(const Index: Integer): IXMLTypeSimple;
    function Get_Item(Index: Integer): IXMLTypeSimple;
  end;

{ TXMLTypeUserDef }

  TXMLTypeUserDef = class(TXMLNodeCollection, IXMLTypeUserDef)
  protected
    { IXMLTypeUserDef }
    function Get_Name: WideString;
    function Get_Size: Integer;
    function Get_Nativesize: Integer;
    function Get_Typeclass: WideString;
    function Get_Iecname: WideString;
    function Get_UserDefElement(Index: Integer): IXMLUserDefElement;
    procedure Set_Name(Value: WideString);
    procedure Set_Size(Value: Integer);
    procedure Set_Nativesize(Value: Integer);
    procedure Set_Typeclass(Value: WideString);
    procedure Set_Iecname(Value: WideString);
    function Add: IXMLUserDefElement;
    function Insert(const Index: Integer): IXMLUserDefElement;
  public
    procedure AfterConstruction; override;
  end;

{ TXMLTypeUserDefList }

  TXMLTypeUserDefList = class(TXMLNodeCollection, IXMLTypeUserDefList)
  protected
    { IXMLTypeUserDefList }
    function Add: IXMLTypeUserDef;
    function Insert(const Index: Integer): IXMLTypeUserDef;
    function Get_Item(Index: Integer): IXMLTypeUserDef;
  end;

{ TXMLUserDefElement }

  TXMLUserDefElement = class(TXMLNode, IXMLUserDefElement)
  protected
    { IXMLUserDefElement }
    function Get_Type_: WideString;
    function Get_Iecname: WideString;
    function Get_Byteoffset: Integer;
    procedure Set_Type_(Value: WideString);
    procedure Set_Iecname(Value: WideString);
    procedure Set_Byteoffset(Value: Integer);
  end;

{ TXMLTypeArray }

  TXMLTypeArray = class(TXMLNodeCollection, IXMLTypeArray)
  protected
    { IXMLTypeArray }
    function Get_Name: WideString;
    function Get_Size: Integer;
    function Get_Nativesize: Integer;
    function Get_Typeclass: WideString;
    function Get_Basetype: WideString;
    function Get_Iecname: WideString;
    function Get_ArrayDim(Index: Integer): IXMLArrayDim;
    procedure Set_Name(Value: WideString);
    procedure Set_Size(Value: Integer);
    procedure Set_Nativesize(Value: Integer);
    procedure Set_Typeclass(Value: WideString);
    procedure Set_Basetype(Value: WideString);
    procedure Set_Iecname(Value: WideString);
    function Add: IXMLArrayDim;
    function Insert(const Index: Integer): IXMLArrayDim;
  public
    procedure AfterConstruction; override;
  end;

{ TXMLTypeArrayList }

  TXMLTypeArrayList = class(TXMLNodeCollection, IXMLTypeArrayList)
  protected
    { IXMLTypeArrayList }
    function Add: IXMLTypeArray;
    function Insert(const Index: Integer): IXMLTypeArray;
    function Get_Item(Index: Integer): IXMLTypeArray;
  end;

{ TXMLNodeList }

  TXMLNodeList = class(TXMLNodeCollection, IXMLNodeList)
  protected
    { IXMLNodeList }
    function Get_Node(Index: Integer): IXMLNode;
    function Add: IXMLNode;
    function Insert(const Index: Integer): IXMLNode;
  public
    procedure AfterConstruction; override;
  end;

{ TXMLNode }

  TXMLNode = class(TXMLNode, IXMLNode)
  private
    FNode: IXMLNodeList;
  protected
    { IXMLNode }
    function Get_Name: WideString;
    function Get_Type_: WideString;
    function Get_Access: WideString;
    function Get_Area: Integer;
    function Get_Offset: Integer;
    function Get_Directaddress: WideString;
    function Get_Node: IXMLNodeList;
    function Get_Comment: WideString;
    procedure Set_Name(Value: WideString);
    procedure Set_Type_(Value: WideString);
    procedure Set_Access(Value: WideString);
    procedure Set_Area(Value: Integer);
    procedure Set_Offset(Value: Integer);
    procedure Set_Directaddress(Value: WideString);
    procedure Set_Comment(Value: WideString);
  public
    procedure AfterConstruction; override;
  end;

{ TXMLNodeList }

  TXMLNodeList = class(TXMLNodeCollection, IXMLNodeList)
  protected
    { IXMLNodeList }
    function Add: IXMLNode;
    function Insert(const Index: Integer): IXMLNode;
    function Get_Item(Index: Integer): IXMLNode;
  end;

最佳答案

Delphi XSD 导入器为每个类型添加一个 IXML 前缀。对于您的 XSD,生成的(生成的)接口(interface)名称与 Delphi XML 框架的接口(interface)名称冲突:

...
<xs:element name="Node">
...
<xs:element name="NodeList">
...

XSD 中的这些元素类型声明导致接口(interface)类型 { IXMLNode } 和 { IXMLNodeList } 的生成。


基于 whosrdaddy 评论的潜在解决方法:在 XML 数据绑定(bind)向导中重命名冲突的类型名称。屏幕截图显示标识符名称是可编辑的,我添加了一个下划线以将其从 IXMLNodeList 重命名为 IXML_NodeList。

XML Data Binding Wizard

关于xml - 德尔福 2007 xsd 导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32246453/

相关文章:

android - 无法在 Activity 中显示背景颜色

delphi - 如何在Delphi项目中手动更改版本信息

delphi - 如何创建带有在设计时接受其他控件的子面板的自定义控件?

delphi - 如何在 Delphi 中根据 TList 所包含对象的任意属性对 TList 进行排序?

xml - 无法在 PowerShell 中完全解析 XML

php - 解析 PHP 数组中的 XML 数据

java - 除了 XSOM 之外,还有其他框架可以解析 XSD 吗?

java - DOM 解析器错误的 childNodes 计数

java - 如何将 EXIF 元中找到的日期时间转换为 XSD 标准?

c# - WCF MessageContract 包装和列表