java xml 拆分_java – 在多个XML文件中拆分XML

我有以下xml文件作为输入….

xsi:schemaLocation="http://www.safersys.org/namespaces/T0020V1 T0020V1.xsd"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.safersys.org/namespaces/T0020V1">

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

A P SUPPLY CO

PH

1400 N OATS

TEXARKANA

AR

71854

MILLER

US

MA

P O 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)));

}

}

标签:java,xml

来源: https://codeday.me/bug/20190927/1822872.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值