在最新版本的免費和開源Eclipse IDE中,您可以從DTD和XSD文件生成XML文檔。右鍵單擊給定的* .dtd或* .xsd文件並選擇「生成 - > XML文件...」。您可以選擇要生成的根元素以及是否應生成可選的屬性和元素。xsd與eclipse的無頭xml生成
我可以使用這個無頭(無日食)嗎?
在最新版本的免費和開源Eclipse IDE中,您可以從DTD和XSD文件生成XML文檔。右鍵單擊給定的* .dtd或* .xsd文件並選擇「生成 - > XML文件...」。您可以選擇要生成的根元素以及是否應生成可選的屬性和元素。xsd與eclipse的無頭xml生成
我可以使用這個無頭(無日食)嗎?
您可以創建一個無頭RCP應用程序,其中只包含執行實際生成所需的插件。這些主要是WTP插件以及管理擴展點等所需的一些核心插件。
可以從命令行運行RCP應用程序,並傳遞用於從中生成的模式的參數和輸出文件名。它缺少生產實施中可能需要的許多驗證,但會告訴你如何完成。 它還將字符集硬編碼爲UTF-8,您可以擴展參數處理以使其成爲可選參數或其他內容。
下面的代碼片段可以合併到一個新的無頭RCP應用程序中。要創建RCP應用程序,首先創建一個新的插件項目:
在該項目中,你應該看到一個Application
類,複製下面的Java內容到Application
源(和進口文件的頂部)的start()
方法
進口java.io.ByteArrayOutputStream中。 import java.io.File; import java.io.FileInputStream; import j ava.io.FileOutputStream; import java.io.FileWriter; import java.net.URI; import java.net.URL;
import org.eclipse.core.internal.utils.FileUtil; import org.eclipse.core.runtime.Platform; import org.eclipse.emf.ecore.plugin.EcorePlugin; import org.eclipse.equinox.app.IApplication; import org.eclipse.equinox.app.IApplicationContext; import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument; import org.eclipse.wst.xml.ui.internal.wizards.NewXMLGenerator;
public Object start(IApplicationContext context)throws Exception { String [] args = Platform.getCommandLineArgs();
String schemaFileName = args[0];// e.g. "C:\test\test.xsd"
String xmlFileName = args[1];// e.g. "C:\test\test.xml"
String rootName = args[2];//"myTestRoot";
String charsetName = "UTF-8";
try {
//get the URI as a full URL path
URI schemaUri = new File(schemaFileName).toURI();
schemaFileName = schemaUri.toURL().toString();
//TODO handle any errorInfo set into this array
String[] errorInfo = new String[2];
CMDocument cmDocument = NewXMLGenerator.createCMDocument(schemaFileName,
errorInfo);
NewXMLGenerator generator = new NewXMLGenerator(schemaFileName,
cmDocument);
generator.setRootElementName(rootName);
ByteArrayOutputStream out = generator.createXMLDocument(xmlFileName,
charsetName);
//output the content to the file.
File outFile = new File(xmlFileName);
outFile.getParentFile().mkdirs();
FileWriter writer = new FileWriter(outFile);
writer.write(out.toString(charsetName));
writer.flush();
writer.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return IApplication.EXIT_OK;
}
要創建一個獨立的應用程序,您還需要創建一個產品配置。
現在,您需要導出RCP應用程序。
您現在應該有一個獨立的應用程序,你可以調用,就像任何其他應用程序,傳遞命令行參數以從模式生成XML文件。
預期參數,依次爲:
注意這個過程只會從單個模式的文件,如果你的架構引用其他模式將當前失敗。可以擴展進程以獲取列出所有引用的模式位置的屬性文件,並將這些文件解析爲目錄貢獻,以便進程可以解析模式。一些關於如何以及爲什麼你會這樣做的說明。
如果我有機會,我會考慮實施這個並相應地更新我的答案。
例如,如果您有一個Spring模式,您可能希望在模式文件中包含各種Spring名稱空間模式。在Eclipse中,Catalog貢獻提供了將這些模式ID映射到模式文件位置的方法,以便可以對其進行分析。如果您有插件,可以將它們與應用程序捆綁在一起並定義目錄貢獻(請參閱help以獲取貢獻指標)。
如果您沒有可用的目錄庫貢獻,該過程將改爲在屬性文件中定義鍵值對以引用驅動器上的模式位置。
示例內容:
http://www.springframework.org/schema/beans=c:\\schema\\spring-beans.xsd
http://www.springframework.org/schema/tool=c:\\schema\\spring-tool.xsd
你見過this question?它並沒有專門提到無頭環境,但它非常相似。其中一個suggestions是Sun XMLGenerator工具。我嘗試了它,它像魅力一樣工作。
謝謝。不幸的是,生成器無法爲日期數據類型生成值。是否有可能生成沒有數據的XML?那麼
這真的很棒,謝謝你的努力。我希望你喜歡賞金:) – codevour 2009-10-09 07:26:20
非常感謝,並很樂意提供幫助。如果您有任何問題,請告訴我。我唯一的「問題」是,因爲你在當天早些時候接受了,所以在回答任何問題之前,我可能會達到限制。如果它在一天結束時被接受,我可以獲得額外的免費積分。哦,至少我今天可能會出去吃午飯...... – 2009-10-09 10:10:30