Ich habe eine XML-Datei, während auf der Übereinstimmung der Übereinstimmung (Enthält) auf der Xpath-Variable aufgeteilt werden muss.Split XML mit XSLT zu mehreren Dateien mit Java
`<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>`
So Bedingungen für die xml ist 1. Apps/App/Typ/text() aufzuspalten -> Enthält 'MP' 2. Apps/App/Typ/text() -> 'DP' Enthält
im Folgenden sind die erwarteten Ergebnisse:
Alle App-Knoten enthält Typ als 'MP' in einer Datei sein sollte -> MP.xml.
<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>
Alle App-Knoten-Typ als 'DP' enthält, in einer Datei sein sollte -> DP.xml.
<Apps> <App> <AppID>715</AppID> <Type>DP Pay</Type> </App> </Apps>
Alle App-Knoten nicht gelungen, die über 2 Bedingungen sollten in der Datei entsprechen -> Mismatched.xml.
<Apps> <App> <AppID>715</AppID> <Type>CP Pay</Type> </App> <App> <AppID>725</AppID> <Type>CP Pay</Type> </App> </Apps>
Java-Code
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");
}
}
könnten Sie Ihr Java-Code als auch schreiben? Verwenden Sie Saxon, einfaches Java (mit xslt 2.0)? Danke, Stephan –
Ja benutze Saxon. Java Code in meiner Frage selbst hinzugefügt –