You cast the XmlSchemaItem to an XmlSchemaElement. XmlSchemaElement e = (XmlSchemaElement)schema.getElements().iterator().next();
On Tu, Apr 16, 2009 at 7:27 AM, Patrick Kiernan <[email protected]> wrote: > I've tried: > > XmlSchemaObjectTable objectTable = schema.getElements(); > > Now I can print the name of the element by doing: > Iterator it = objectTable.getNames(); > System.out.println(it.next()); > > Ok but how do I "obtain" the one element in my schema so that I can call > getSchemaType on > it like you suggest? > > On Thu, Apr 16, 2009 at 12:19 PM, Benson Margulies > <[email protected]>wrote: > >> Same thing I explained before. The top-level collections contain only >> top-level objects. The one element in your schema is sitting in the >> items() collection, or in the elements collection. You obtain it, and >> call getSchemaType on it to work our way down. >> >> The data structures really mirror the XML. >> >> >> On Thu, Apr 16, 2009 at 7:11 AM, Patrick Kiernan <[email protected]> >> wrote: >> > I'm not sure how to get the elements into an XmlSchemaElement object. >> > I have the schema in an object called "schema" of type XmlSchema. Looking >> at >> > the API >> > for methods on this and I see getSchemaTypes() which returns an >> > XmlSchemaObjectTable. >> > I've tried doing a getCount() on this but it returns 0 for the file I'm >> > testing. >> > >> > Can you explain further please? >> > >> > On Wed, Apr 15, 2009 at 7:50 PM, Benson Margulies <[email protected] >> >wrote: >> > >> >> There are methods on XmlSchemaElement that returns the type name (when >> >> it's in another schema) or the type (when it's in the same schema). >> >> You want getSchemaType(). >> >> >> >> On Wed, Apr 15, 2009 at 9:23 AM, Patrick Kiernan <[email protected]> >> >> wrote: >> >> > Ok so I want to parse the notes.xsd file. When I say parse I would >> like >> >> to >> >> > extract >> >> > the following: >> >> > >> >> > note >> >> > to [string] >> >> > from [string] >> >> > heading [string] >> >> > body [string] >> >> > >> >> > So I'd like to extract the fact that the elements to, from, heading >> and >> >> body >> >> > are of type string. It >> >> > may be important to note that I am trying make my parser ask generic >> as >> >> > possible i.e. it will do this >> >> > for any schema file. >> >> > >> >> > The full file is available here: >> >> > http://www.redbrick.dcu.ie/~hoss/uploads/note.xsd< >> >> http://www.redbrick.dcu.ie/%7Ehoss/uploads/note.xsd> >> >> > >> >> > So I've the following code: >> >> > >> >> > try{ >> >> > InputStream is = is = new >> >> > >> >> >> FileInputStream("C:\\Users\\Patrick\\Documents\\college\\FYP\\xml\\note.xsd"); >> >> > >> >> > XmlSchemaCollection schemaCol = new >> XmlSchemaCollection(); >> >> > XmlSchema schema = schemaCol.read(new StreamSource(is), >> >> > null); >> >> > XmlSchemaObjectTable objectTable = schema.getElements(); >> >> > >> >> > So I have an object called schema. The methods getElements() and >> >> getItems() >> >> > both return note and not >> >> > the elements to, from, heading or body as they are in a sequence in a >> >> > complex type. >> >> > >> >> > You say to ask the elemnt for its type, how do I do this? >> >> > >> >> > Thanks, >> >> > Patrick >> >> > >> >> > >> >> > On Fri, Apr 10, 2009 at 10:38 PM, Benson Margulies < >> >> [email protected]>wrote: >> >> > >> >> >> You ask the element for its type. You cast the type to >> >> >> XmlSchemaComplexType. >> >> >> >> >> >> You ask it for for the particle. >> >> >> >> >> >> You cast that to XmlSchemaSequence. >> >> >> >> >> >> And the elements are in the sequence. >> >> >> >> >> > >> >> >> > >> >
