我有以下xsd:
<xs:schema xmlns="urn:bookroom-schema" targetNamespace="urn:bookstore-schema"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="book" type="xs:string" />
<xs:complexType name="booktype">
<xs:sequence>
<xs:element name="author" type="xs:string" />
<xs:element name="title" type="xs:string" />
<xs:element name="price" type="xs:decimal" />
</xs:sequence>
</xs:complexType>`
<xs:element name="publisher" type="xs:string" />
</xs:schema>
这是该计划。
procedure TForm1.AllElementsinSchema;
var oSchemaCache : XMLSchemaCache60;
oSchema : ISchema;
nsTarget: widestring;
kk : integer;
begin
oSchemaCache := coXMLSchemaCache60.Create;
nsTarget := 'urn:bookstore-schema';
oSchemaCache.add(nsTarget,'c:\book.xsd');
oSchema := oSchemaCache.getSchema(nsTarget);
for kk := 0 to pred(oSchema.elements.length) do
showmessage('elements[' + inttostr(kk) + '] : ' + oschema.elements.item[kk].name);
end;
当我运行程序时,我得到了:
book
publisher
我如何得到这个(所有元素包括子元素)?
book
author
title
price
publisher
请指导我如何在Delphi中执行此操作。提前谢谢。
答案 0 :(得分:0)
你还必须为oSchema.types
写一个循环,因为booktype
显然是一个类型(或者complexType
是确切的)而不是和元素。