189

かなりの量の XML 変換を含むアプリケーションを開発しています。適切な入力テスト データ自体はなく、DTD ファイルまたは XSD ファイルのみです。これらのファイルからテスト データを自分で生成したいと考えています。それを行う簡単/無料の方法はありますか?

編集

このための無料のツールはないようです。OxygenXML が最適なツールの 1 つであることに同意します。

4

19 に答える 19

182

Visual Studio 2008 SP1以降では、XMLスキーマエクスプローラーは、いくつかの基本的なサンプルデータを含むXMLドキュメントを作成できます。

  1. XSDドキュメントを開きます
  2. XMLスキーマエクスプローラーに切り替えます
  3. ルートノードを右クリックして、[サンプルXmlの生成]を選択します

XMLスキーマエクスプローラーのスクリーンショット

于 2008-09-03T14:41:57.423 に答える
127

フリーでオープン ソースのEclipse IDE の最近のバージョンでは、DTD ファイルと XSD ファイルから XML ドキュメントを生成できます。特定の *.dtd または *.xsd ファイルを右クリックし、[生成] -> [XML ファイル] を選択します。生成するルート要素と、オプションの属性と要素を生成するかどうかを選択できます。

もちろん、Eclipse を使用して DTD および XSD スキーマ ファイルを作成および編集することもできます。また、プラグインをインストールする必要はありません。これは、標準配布に含まれています。

于 2009-07-17T08:33:44.230 に答える
37

Intellij Ideaユーザーの場合:

[ツール]->[XMLアクション]をご覧ください

ここに画像の説明を入力してください

(私がテストした限りでは)非常にうまく機能しているようです。

編集:

@naXaで述べたように、XSDファイルを右クリックして、[XSDスキーマからXMLドキュメントを生成...]をクリックすることもできます。

于 2012-08-23T07:33:28.920 に答える
30

Oxygen( http://www.oxygenxml.com/)も同様に機能すると思いますが、これは別の商用製品です。しかし、これは素晴らしいものです...多くのXML作業を行う人には強くお勧めします。素晴らしいEclipseプラグインも付属しています。

私は、無料のフル機能の30日間の試用版があると信じています。

于 2008-08-26T14:05:46.763 に答える
12

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

于 2008-11-10T02:08:21.960 に答える
10

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 ライセンスの下でリリースされているようです。ソースコードはここからアクセスできます

于 2008-12-17T11:19:11.673 に答える
10

無料ではありませんが、XMLSpyがそれを行います...

私は、Liquid Xml Studioがそれを無料で行ってくれると信じていますが、テスト データを作成するために個人的に使用したことはありません。

于 2008-08-19T22:34:44.960 に答える
7

これまでのところ、誰も質問に答えることができなかったようです:)

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);
于 2011-06-02T02:45:18.630 に答える
7

http://www.wmhelp.comにある XMLPad (無料) を使用 して、xml サンプルを生成することもできます。メニューから: XSD -> サンプル XML ファイルを生成します。

于 2012-06-06T12:58:29.893 に答える
5

Microsoft は、サンプルとして「ドキュメント ジェネレーター」ツールを公開しています。 これは、サンプル アプリのアーキテクチャと操作をある程度詳しく説明する記事です。

サンプル生成ツールを実行するだけの場合は、ここをクリックして MSI をインストールしてください。

それは無料です。ソースが利用可能です。.NET Framework を実行する必要があります。XSD でのみ機能します。(Relax NG または DTD ではありません)。

于 2009-04-08T14:12:44.040 に答える
5

XML-XIG: XML インスタンス ジェネレーター

http://xml-xig.sourceforge.net/

このオープンソースは役に立ちます。

于 2011-02-25T07:30:06.260 に答える
4

Microsoft Office には「InfoPath」があります。これは、XSD をインポートとして受け取り、XML ファイルを作成するためのフォームベースのエディターをすばやく簡単に定義できるようにします。フォームを定義するモードと、フォームに入力して XML ファイルを作成するモードの 2 つのモードがあります。Office 2003 で最初に導入されたものだと思いますが、ほとんどの人はインストールしません。どれだけ好きかショックです。

于 2009-05-21T14:29:33.897 に答える
1

SoapUIのオープン ソース バージョンは、WSDL (XSD 型定義を含む) から SOAP 要求を生成できるため、この機能のオープン ソース実装があるようです。残念ながら、これに慣れているライブラリはわかりません。

于 2010-11-26T12:06:26.960 に答える
1

XMLBlueprint 7.5 では、次のことができます。 - dtd からサンプル xml を生成する - リラックスしたスキーマからサンプル xml を生成する - xml スキーマからサンプル xml を生成する

于 2010-03-12T08:55:47.953 に答える
1

Liquid XML Studio には、XML スキーマからサンプル XML ファイルを作成するXML サンプル ジェネレーターウィザードがあります。結果のデータはスキーマに準拠しているようです (正規表現パターンのデータを生成できないだけです)。

XSD から XML サンプルを生成する

于 2010-08-06T11:43:43.263 に答える
0

完全を期すために、 http://code.google.com/p/jlibs/wiki/XSInstanceを追加します。これは、同様の(ただしJava固有の)質問で言及されています。XSDからサンプルXMLを生成するJava「API」はありますか?

于 2012-05-15T12:33:08.640 に答える
0

OpenXSDライブラリは、XSD に基づく XML インスタンスの生成をサポートしていると述べていますそれをチェックしてください。

于 2011-12-19T05:56:37.490 に答える
0

XML ブループリントもそれを行います。手順はこちら

http://www.xmlblueprint.com/help/html/topic_170.htm

無料ではありませんが、10 日間の無料トライアルがあります。高速で効率的です。残念ながらWindowsのみです。

于 2012-10-14T15:31:48.257 に答える