4

重複の可能性:
Java でクラスを動的に作成する

Java のリフレクションの概念について質問があります。

Java で SAX XML パーサーを作成しようとしています。実行する必要があるのは、XML に従ってフィールドを含む新しいクラスを作成し、解析中にそのクラスを使用する必要があることです。ただし、この方法は、選択した XML に非常に固有のものです。

私が考えているのは、考えられるすべての XML で動作する XML (SAX) パーサーを作成できる方法があるかどうかということです。つまり、XML に動的に含まれるフィールドを持つクラスを作成し、同じクラスを使用して XML ファイルを解析する必要があります。

私の質問を明確に提示できれば幸いです。

ありがとう。

4

1 に答える 1

0

以前にも同様の状況がありましたが、xml パーサーにはいくつかの構成が必要でした。私のアプローチは、a) 解析エンジン、b) 構成でした。

構成部分は、プロパティを介して渡される XPath 式を中心に構築されます。これらは静的な XPath 式であり、入力 xml メッセージが変更された場合は更新が必要です。

解析エンジン部分は、これらの式を実行して、xml 要素、属性などをクエリし、java オブジェクトに入力します。

編集:

たとえば、特定の xml (簡略化された名前空間なし):

<msg>
    <something>
        <somenode>
            <version>1.0.0</version>
        </somenode>
    </something>
</msg>

コード例: (簡略化)

String myXpExpr = "//version/text()";  // make it .properties
Document xmlDocument = DocumentBulderFactory.newInstance().newDocumentBuilder().parse(xmlInputStream);
XPath xpXPath = XPathFactory.newInstance().newXPath();
XPathExpression expr = xpXPath.compile(myXpExpr);
resultObject = expr.evaluate(xmlDocument, returnTypeQName); 

これにより、resultObject として「1.0.0」が得られます。

于 2012-10-08T21:06:27.430 に答える