在多个XML文件中拆分XML
我有以下xml文件作为输入….
SAFER 04.02 01.00 REPLACE 2009-09-01T00:00:00 CT 274845 US AR 55002 I 100 2007-11-06 2009-08-03 LG AP SUPPLY CO PH 1400 N OATS TEXARKANA AR 71854 MILLER US MA PO BOX 1927 TEXARKANA AR 75504 US ..... ..... .....
我想把这个xml文件通过像这样的java代码分成多个文件…
File1.xml
..... .....
File2.xml
..... .....
File3.xml
..... .....
以及更多xml文件。每个xml文件包含最多10或15个IRP_ACCOUNT。
有人能帮帮我吗 ?
快而脏:
public class XmlSplit { public static void main(String [] args) throws Exception { File input = new File("input.xml"); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); Document doc = dbf.newDocumentBuilder().parse(input); XPath xpath = XPathFactory.newInstance().newXPath(); NodeList nodes = (NodeList) xpath.evaluate("//T0020/IRP_ACCOUNT", doc, XPathConstants.NODESET); int itemsPerFile = 5; int fileNumber = 0; Document currentDoc = dbf.newDocumentBuilder().newDocument(); Node rootNode = currentDoc.createElement("T0020"); File currentFile = new File(fileNumber+".xml"); for (int i=1; i <= nodes.getLength(); i++) { Node imported = currentDoc.importNode(nodes.item(i-1), true); rootNode.appendChild(imported); if (i % itemsPerFile == 0) { writeToFile(rootNode, currentFile); rootNode = currentDoc.createElement("T0020"); currentFile = new File((++fileNumber)+".xml"); } } writeToFile(rootNode, currentFile); } private static void writeToFile(Node node, File file) throws Exception { Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.transform(new DOMSource(node), new StreamResult(new FileWriter(file))); } }