2012-02-09 42 views
0

我需要分析以下XSD文件..我要讀所有的值來分析.xsd文件..如何使用XSOMParser

<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」嗎。

+0

爲什麼使用XSOM?這是一個奇特且高度專業化的工具。你不能只使用普通的XML解析器嗎? – skaffman 2012-02-09 11:50:01

+2

看看這個博客[XSOM教程](http://myjavastuffs.blogspot.com/2011/09/xml-schema-document-parsing-using-xsom.html) – 2012-07-13 03:49:52

回答

1

你試過了什麼代碼?

與來自XSOM user guide:

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(); 
    } 
}