2014-04-30 26 views
0

我有以下DTD-XML文件(來自MSAccess),並且將用它來以編程方式創建我的CoreData模型。可以通過DTD-XML文件以編程方式創建CoreData模型嗎?

這裏的每個ELEMENT變成一個實體,與其中列出的每個ATTLIST屬性都有一對一的關係。

這甚至可能嗎?

<?xml version="1.0" encoding="UTF-8"?> 

<!ELEMENT league (date, time, version, season, division+)> 

<!ELEMENT date EMPTY> 
<!ATTLIST date 
    year CDATA #REQUIRED 
    month CDATA #REQUIRED 
    date CDATA #REQUIRED 
    day CDATA #REQUIRED 
> 

<!ELEMENT division (team+)> 
<!ATTLIST division 
    id CDATA #REQUIRED 
    label CDATA #REQUIRED 
> 

<!ELEMENT season EMPTY> 
<!ATTLIST season 
    season CDATA #REQUIRED 
> 

<!ELEMENT sports-statistics (league)> 

<!ELEMENT team EMPTY> 
<!ATTLIST team 
    id CDATA #REQUIRED 
    city CDATA #REQUIRED 
    name CDATA #REQUIRED 
    alias CDATA #REQUIRED 
> 

<!ELEMENT time EMPTY> 
<!ATTLIST time 
hour CDATA #REQUIRED 
    minute  CDATA #REQUIRED 
    second  CDATA #IMPLIED 
    timezone CDATA #REQUIRED 
    utc-hour CDATA #REQUIRED 
    utc-minute CDATA #REQUIRED 
> 

<!ELEMENT version EMPTY> 
<!ATTLIST version 
    number CDATA #REQUIRED 
> 

回答

0

確定這是可能的。

如果您使用iOS,則可以使用內置的NSXMLParser加載該文件並遍歷其內容。或者,如果您希望加載文檔並檢查它,而不是獲取解析器回調,請添加TouchXML。 [基本上,NSXMLParser做SAX風格的解析,TouchXML使用DOM風格]。

一旦你加載了XML,你就可以創建你的模型。核心數據模型創建的每個方面都可以作爲核心數據API調用提供,因此您不需要使用模型編輯器。你會想

  1. 創建的NSManagedObjectModel
  2. 實例創建每個元素的新NSEntityDescription。使用[NSManagedObjectModel setEntities:]將這些與模型相關聯。
  3. 爲每個屬性創建NSAttributeDescription s,爲實體類型之間的每個關係創建NSRelationshipDescription s。使用[NSEntityDescription setProperties:]將這些與實體描述關聯。
  4. (可選)保存NSManagedObjectModel,這樣您就不必每次啓動應用時都要這樣做。 NSManagedObjectModel沒有任何自己的方法來保存,但它符合NSCoding,所以使用它。

請記住,只有當您添加持久性存儲文件時,模型纔是可變的。您只能在沒有數據的模型中進行更改。一旦加載數據,您必須將模型視爲不可變的。

相關問題