2015-11-06 44 views
0

,然後取在從架構元素,如果有複雜的對象則該屬性應與前綴爲主要複雜類型取。 例如如何解析器的XML模式,並獲取我想要解析的XML模式的屬性名

<xs:element name="address" > 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="city" type="xs:string"/> 
       <xs:element name="street" type="xs:string"/> 
       <xs:element name="zipcode" type="xs:integer"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 

地址是複雜的類型,如果我們想獲取郵編那麼它應該像「address.zipcode」 有沒有辦法做到這一點還是我們必須手動檢查型和創造領域。

下面是XML模式。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="Employee"> 
<xs:complexType> 
    <xs:sequence> 
     <xs:element name="empId" type="xs:integer"/> 
     <xs:element name="firstName" type="xs:string"/> 
     <xs:element name="lastName" type="xs:string"/> 
     <xs:element name="title" type="xs:string"/> 
     <xs:element name="address" > 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="city" type="xs:string"/> 
       <xs:element name="street" type="xs:string"/> 
       <xs:element name="zipcode" type="xs:integer"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 

    </xs:sequence> 
</xs:complexType> 

+0

你想解析...但是什麼?你沒有聲明任何技術... – Shnugo

+0

我想解析XML模式以獲取在模式中指定的字段,所以我問是否有任何方法來解析模式,我們可以得到fields.and incase如果它是複雜的對象字段然後它應該以路徑 –

+0

作爲前綴再次寫出「我想解析」,但是如何?唯一的標籤是'xml' ...您是否使用XSLT,一種編碼語言(哪個?),SQL(哪個RDBMS?),第三方工具... – Shnugo

回答

0

從原始架構文檔中提取信息是具有挑戰性的,除非你知道該架構將被限制使用的語言的一個子集:例如,它不會使用命名模型組,或替代組或通過擴展派生的複雜類型。

在您的示例中編寫一些(例如在XSLT中)很容易 - 或者至少,如果我們對您想要的輸出有更清晰的描述會很容易 - 但是編寫能夠處理ANY模式的東西非常多更加困難。

它可以更好地與由一個「真正的」架構處理器產生的模式的編譯後的表示工作。例如,Xerces有一個API,允許訪問模式編譯器生成的「模式組件」,Saxon可以選擇生成一個SCM文件(模式組件模型),它是一個包含相同信息的XML文件;在這個級別上,您不必應付源模式可能寫入的各種方式。