1
{
public class XmlSplit {
public static void main(String [] args) throws Exception {
File input = new File("C:\\Users\\Edit5.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
Document doc = (Document) dbf.newDocumentBuilder().parse(input);
XPath xpath = XPathFactory.newInstance().newXPath();
NodeList nodes = (NodeList) xpath.evaluate("//transaction", doc, XPathConstants.NODESET);
int itemsPerFile = 2000;
int fileNumber = 0;
Document currentDoc = (Document) dbf.newDocumentBuilder().newDocument();
Node rootNode;
rootNode = currentDoc.createElement("transactions");
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("transactions");
currentFile = new File((++fileNumber)+"C:\\UsersEdit1.xml");
}
else
{
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("C:\\UsersEdit1.xml")));
}
}
}
Привет Я расщеплении большой XML
используя DOM
анализатор, но это занимает много времени, чтобы расколоть XML
.Can кто-то помочь мне с этим для этого с помощью анализатора stax. Также он не генерирует новый файл. Это также проблема. Раньше Если кто-то может это сделать, пожалуйста, помогите мне.большой XML Расщепление с помощью DOM парсер, но я хочу использовать Stax анализатор поэтому увеличение производительности
Насколько велика велика? 50Kb или 50Gb? И как медленно медленно? Предоставление нам некоторых цифр поможет нам оценить, является ли отмена существующего подхода и попытки чего-то другого сделать разумным. –
Размер файла составляет 150 мб, и он выдает из памяти кучу ошибку. И если мы передаем небольшой размер XML, например, для 50 мб, требуется больше половины часа. –
Я не понимаю, почему это должно занять много времени: здесь может быть какая-то проблема, которая не связана с кодом, который вы нам показали. Вы пробовали использовать профиль процессора Java, чтобы узнать, куда идет время? –