かなりの量の XML 変換を含むアプリケーションを開発しています。適切な入力テスト データ自体はなく、DTD ファイルまたは XSD ファイルのみです。これらのファイルからテスト データを自分で生成したいと考えています。それを行う簡単/無料の方法はありますか?
編集
このための無料のツールはないようです。OxygenXML が最適なツールの 1 つであることに同意します。
Visual Studio 2008 SP1以降では、XMLスキーマエクスプローラーは、いくつかの基本的なサンプルデータを含むXMLドキュメントを作成できます。
フリーでオープン ソースのEclipse IDE の最近のバージョンでは、DTD ファイルと XSD ファイルから XML ドキュメントを生成できます。特定の *.dtd または *.xsd ファイルを右クリックし、[生成] -> [XML ファイル] を選択します。生成するルート要素と、オプションの属性と要素を生成するかどうかを選択できます。
もちろん、Eclipse を使用して DTD および XSD スキーマ ファイルを作成および編集することもできます。また、プラグインをインストールする必要はありません。これは、標準配布に含まれています。
Intellij Ideaユーザーの場合:
[ツール]->[XMLアクション]をご覧ください
(私がテストした限りでは)非常にうまく機能しているようです。
編集:
@naXaで述べたように、XSDファイルを右クリックして、[XSDスキーマからXMLドキュメントを生成...]をクリックすることもできます。
Oxygen( http://www.oxygenxml.com/)も同様に機能すると思いますが、これは別の商用製品です。しかし、これは素晴らしいものです...多くのXML作業を行う人には強くお勧めします。素晴らしいEclipseプラグインも付属しています。
私は、無料のフル機能の30日間の試用版があると信じています。
Sourceforge.net で入手できる camprocessor は、あらゆる XSD の xml テスト ケースを生成します。独自のテスト例を生成する方法を示すチュートリアルが利用可能です - コンテンツのヒントを使用して、ランダムなジャンク例だけでなく現実的な例を確認することも含まれます.
チュートリアルはこちらから入手できます: http://www.oasis-open.org/committees/download.php/29661/XSD%20and%20jCAM%20tutorial.pdf
また、OASIS Content Assembly Mechanism (CAM) 標準を使用して XSD をより XSLT に適した構造にリファクタリングするツールの詳細については、リソース Web サイト ( http://www.jcam.org.uk ) を参照してください。
楽しんでください、DW
Sun/Oracle Multi-Schema Validatorの一部である XML Instance Generator を使用できます。
それはREADME.txtの状態です:
Sun XML Generator は、数種類のスキーマからさまざまな XML インスタンスを生成する Java ツールです。DTD、RELAX Namespace、RELAX Core、TREX、および W3C XML Schema Part 1 のサブセットをサポートしています。 [...]
これは、スキーマから有効なインスタンスと無効なインスタンスの両方を生成できるコマンド ライン ツールです。特定のスキーマに準拠する必要がある XML アプリケーションのテスト ケースを生成するために使用できます。
msv ダウンロード ページxmlgen.zip
からダウンロードして解凍し、次のコマンドを実行して、詳細な使用手順を取得します。
java -jar xmlgen.jar -help
このツールは、BSD ライセンスの下でリリースされているようです。ソースコードはここからアクセスできます
無料ではありませんが、XMLSpyがそれを行います...
私は、Liquid Xml Studioがそれを無料で行ってくれると信じていますが、テスト データを作成するために個人的に使用したことはありません。
これまでのところ、誰も質問に答えることができなかったようです:)
EclipseLink の MOXy を使用してバインディング クラスを動的に生成し、バインドされた型を再帰的に処理します。やや重いですが、オブジェクト ツリーがインスタンス化されると、XPath 値の挿入が可能になります。
InputStream in = new FileInputStream(PATH_TO_XSD);
DynamicJAXBContext jaxbContext =
DynamicJAXBContextFactory.createContextFromXSD(in, null, Thread.currentThread().getContextClassLoader(), null);
DynamicType rootType = jaxbContext.getDynamicType(YOUR_ROOT_TYPE);
DynamicEntity root = rootType.newDynamicEntity();
traverseProps(jaxbContext, root, rootType, 0);
TraverseProps は非常に単純な再帰メソッドです。
private void traverseProps(DynamicJAXBContext c, DynamicEntity e, DynamicType t, int level) throws DynamicException, InstantiationException, IllegalAccessException{
if (t!=null) {
logger.info(indent(level) + "type [" + t.getName() + "] of class [" + t.getClassName() + "] has " + t.getNumberOfProperties() + " props");
for (String pName:t.getPropertiesNames()){
Class<?> clazz = t.getPropertyType(pName);
logger.info(indent(level) + "prop [" + pName + "] in type: " + clazz);
//logger.info("prop [" + pName + "] in entity: " + e.get(pName));
if (clazz==null){
// need to create an instance of object
String updatedClassName = pName.substring(0, 1).toUpperCase() + pName.substring(1);
logger.info(indent(level) + "Creating new type instance for " + pName + " using following class name: " + updatedClassName );
DynamicType child = c.getDynamicType("generated." + updatedClassName);
DynamicEntity childEntity = child.newDynamicEntity();
e.set(pName, childEntity);
traverseProps(c, childEntity, child, level+1);
} else {
// just set empty value
e.set(pName, clazz.newInstance());
}
}
} else {
logger.warn("type is null");
}
}
すべてを XML に変換するのは非常に簡単です。
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, System.out);
http://www.wmhelp.comにある XMLPad (無料) を使用 して、xml サンプルを生成することもできます。メニューから: XSD -> サンプル XML ファイルを生成します。
Microsoft Office には「InfoPath」があります。これは、XSD をインポートとして受け取り、XML ファイルを作成するためのフォームベースのエディターをすばやく簡単に定義できるようにします。フォームを定義するモードと、フォームに入力して XML ファイルを作成するモードの 2 つのモードがあります。Office 2003 で最初に導入されたものだと思いますが、ほとんどの人はインストールしません。どれだけ好きかショックです。
SoapUIのオープン ソース バージョンは、WSDL (XSD 型定義を含む) から SOAP 要求を生成できるため、この機能のオープン ソース実装があるようです。残念ながら、これに慣れているライブラリはわかりません。
XMLBlueprint 7.5 では、次のことができます。 - dtd からサンプル xml を生成する - リラックスしたスキーマからサンプル xml を生成する - xml スキーマからサンプル xml を生成する
Liquid XML Studio には、XML スキーマからサンプル XML ファイルを作成するXML サンプル ジェネレーターウィザードがあります。結果のデータはスキーマに準拠しているようです (正規表現パターンのデータを生成できないだけです)。
完全を期すために、 http://code.google.com/p/jlibs/wiki/XSInstanceを追加します。これは、同様の(ただしJava固有の)質問で言及されています。XSDからサンプルXMLを生成するJava「API」はありますか?
OpenXSDライブラリは、XSD に基づく XML インスタンスの生成をサポートしていると述べています。それをチェックしてください。
XML ブループリントもそれを行います。手順はこちら
http://www.xmlblueprint.com/help/html/topic_170.htm
無料ではありませんが、10 日間の無料トライアルがあります。高速で効率的です。残念ながらWindowsのみです。