2
我正在使用帶有XSD生成的ecore的EMF。現在我已經知道了生成的文件是無效的。 有2個原因:如何禁用文檔根的創建
- 有插入
- 這些屬性具有錯誤的大寫一個DocumentRoot的元件。
的事情是:它是不是模型的問題,它是保存過程Propblem(因爲在EMF生成編輯器的輸出是正確的
首先正確的結果:
<?xml version="1.0" encoding="UTF-8"?>
<model:widgetspecification xmlns:model="http://test.com/model" Description="DESC" Name="NAME">
<model:Property Name="PROP1"/>
<model:Property Name="PROP2/>
</model:widgetspecification>
實際結果:
<?xml version="1.0" encoding="ASCII"?>
<model:DocumentRoot xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:model="http://test.com/model">
<widgetspecification description="DESC" name="NAME">
<property name="PROP1"/>
<property name="PROP2"/>
</widgetspecification>
</model:DocumentRoot>
最後保存過程(只輸出到SYSOUT)
Resource resource = new XMIResourceImpl();
resource.getContents().add(modelRoot);
resource.save(System.out, Collections.EMPTY_MAP);
很遺憾,我找不到任何保存例程的相關差異(儘管EMF生成的代碼當然更復雜) - 我想我可能錯過了s.th。但我還沒有找到任何東西)。 另一個有趣的事實是,EMF生成的文件是UTF-8,但在設置此選項時找不到任何參考。