XSDスキーマファイルを解析するためのJava APIはありますか?
[〜#〜] xsom [〜#〜] が見つかりましたが、もはや維持されていないようです。
標準のJDK 6を使用:
System.setProperty(DOMImplementationRegistry.PROPERTY, "com.Sun.org.Apache.xerces.internal.dom.DOMXSImplementationSourceImpl");
DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();
com.Sun.org.Apache.xerces.internal.impl.xs.XSImplementationImpl impl = (XSImplementationImpl) registry.getDOMImplementation("XS-Loader");
XSLoader schemaLoader = impl.createXSLoader(null);
XSModel model = schemaLoader.loadURI("src/test/resources/my.xsd");
Apache Xerces http://xerces.Apache.org/ を使用する傾向があります。私たちにとって本当にうまくいきます。
XMLBeans http://xmlbeans.Apache.org を使用できます。 XML/Javaバインディングに関するほとんどのユースケースでは、人々はJAXBが組み込まれているため、JAXBに移行しているように見えます。しかし、XMLBeansは、やりたいことのために、トラバース。
次のようなものから始めることができます...
SchemaTypeSystem sts = XmlBeans.compileXsd(new XmlObject[] {
XmlObject.Factory.parse(xsdFile) }, XmlBeans.getBuiltinTypeSystem(), null);
そこから、JavaDocからSchemaTypeSystemにドリルする方法を理解できるはずです。
誰かが便利で比較的サポートされている代替手段を知っているなら、それについて知ることは素晴らしいことです。私は積極的に探しています。
public class XsdElements {
public static void main(String args[]) {
try {
// parse the document
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse (new File("C:/Users/rb054/Desktop/Descriptor.1.5.1.xsd"));
NodeList list = doc.getElementsByTagName("xs:element");
//loop to print data
for(int i = 0 ; i < list.getLength(); i++)
{
Element first = (Element)list.item(i);
if(first.hasAttributes())
{
String nm = first.getAttribute("name");
System.out.println(nm);
String nm1 = first.getAttribute("type");
System.out.println(nm1);
}
}
}
catch (ParserConfigurationException e)
{
e.printStackTrace();
}
catch (SAXException e)
{
e.printStackTrace();
}
catch (IOException ed)
{
ed.printStackTrace();
}
}
}
EasyWSDL を試してください-XSDとWSDL仕様の両方を解析できます。
こちらをご覧ください question
前述のように、スキーマ自体は有効なXMLです。検証のために何をロードしますか?その場合は、javax.xml.validation
パッケージに便利なクラスがいくつかあります。
特定の要件によって異なります。 このページ は、主要なオプションとそれらがサポートするユースケースの概要を示しています。
考慮すべき点が1つあります。デプロイするプラットフォームや使用している他のフレームワークによっては、依存関係ツリーにさまざまなAPIが既に存在する場合があります(たとえば、アプリケーションサーバーでは特に一般的です)。バージョンの競合に注意してください。バージョンの競合は、分離とデバッグが困難になる場合があります。