XMLファイルがありますが、Xpath変数の一致(Contains)に基づいて分割する必要があります。Javaを使用して複数のファイルにXSLTを使用してxmlを分割
`<Apps>
<App>
<AppID>49O</AppID>
<Type>MP Pay</Type>
</App>
<App>
<AppID>715</AppID>
<Type>DP Pay</Type>
</App>
<App>
<AppID>716</AppID>
<Type>MP Pay</Type>
</App>
<App>
<AppID>725</AppID>
<Type>CP Pay</Type>
</App>
<App>
<AppID>728</AppID>
<Type>MP Pay</Type>
</App>
<App>
<AppID>728</AppID>
<Type>CP Pay</Type>
</App>
</Apps>`
XMLを分割する条件は 1.アプリ/アプリケーション/タイプ/テキストですので() - > 'MP' 2.アプリ/アプリケーション/タイプ/テキストを(入って) - > 'DP' を含みます以下は
期待される出力です:
'MP' とタイプを含むすべてのアプリケーションノードがファイルにする必要があります - > MP.xml。 > DP.xml - 'DP' とタイプを含む
<Apps> <App> <AppID>49O</AppID> <Type>MP Pay</Type> </App> <App> <AppID>716</AppID> <Type>MP Pay</Type> </App> <App> <AppID>728</AppID> <Type>MP Pay</Type> </App> </Apps>
すべてのアプリケーションノードがファイルにする必要があります。 > Mismatched.xml -
<Apps> <App> <AppID>715</AppID> <Type>DP Pay</Type> </App> </Apps>
すべてのAppは、上記2つの条件は、ファイルにする必要が一致するように失敗したノード。
<Apps> <App> <AppID>715</AppID> <Type>CP Pay</Type> </App> <App> <AppID>725</AppID> <Type>CP Pay</Type> </App> </Apps>
Javaコード
public class Splitter {
public static void transform(String sourcePath, String xsltPath,
String resultDir) {
TransformerFactory tFactory = TransformerFactory.newInstance();
try {
Transformer transformer = tFactory.newTransformer(new StreamSource(
new File(xsltPath)));
transformer.transform(new StreamSource(new File(sourcePath)),
new StreamResult(new File(resultDir)));
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// Set saxon as transformer.
System.setProperty("javax.xml.transform.TransformerFactory",
"net.sf.saxon.TransformerFactoryImpl");
String inputFilepath = "resources\\InputFile.xml";
String transformXsltPath = "resources\\Transform.xslt";
String outputDir = "D://Tmp//";
transform(inputFilepath, transformXsltPath, outputDir);
System.out.println("Completed");
}
}
は、あなたが同様にあなたのJavaコードを投稿することができますか? Saxon、プレーンJava(xslt 2.0)を使用していますか? ありがとう、 Stephan –
はい、Saxonを使用しています。私の質問自体にJavaコードを追加 –