Как разобрать файл .xsd с помощью XSOMParser - PullRequest
0 голосов
/ 09 февраля 2012

Мне нужно проанализировать файл XSD ниже .. и я должен прочитать все значения ..

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        targetNamespace="urn:books"
        xmlns:bks="urn:books">

<xsd:complexType name="Book1">
<xsd:sequence>
  <xsd:element minOccurs="0" maxOccurs="1" form="unqualified" name="Title" type="xs:string"/>
  </xsd:sequence>
</xsd:complexType>


</xsd:schema>

Пожалуйста, дайте мне знать, как я могу сделать это, используя "XSOMParser".

1 Ответ

1 голос
/ 09 февраля 2012

Какой код вы пробовали?

Начните с примеров из XSOM руководства пользователя:

import com.sun.xml.xsom.parser.XSOMParser;
import com.sun.xml.xsom.XSSchemaSet;

XSOMParser parser = new XSOMParser();
parser.setErrorHandler(...);
parser.setEntityResolver(...);

parser.parseSchema( new File("myschema.xsd"));
parser.parseSchema( new File("XHTML.xsd"));

XSSchemaSet sset = parser.getResult();

и далее в руководстве пользователя:

Например, следующий код перечисляет все объявления глобальных элементов и является ли они абстрактным или нет.

// iterate each XSSchema object. XSSchema is a per-namespace schema.
Iterator itr = sset.iterateSchema();
while( itr.hasNext() ) {
  XSSchema s = (XSSchema)itr.next();

  System.out.println("Target namespace: "+s.getTargetNamespace());

  Iterator jtr = s.iterateElementDecls();
  while( jtr.hasNext() ) {
    XSElementDecl e = (XSElementDecl)jtr.next();

    System.out.print( e.getName() );
    if( e.isAbstract() )
      System.out.print(" (abstract)");
    System.out.println();
  }
}
...