I needed to split an xml-file, that worked but than i discovered that I don't need the part and . I split it into 1000 files so is it possible that i can alter the code that i already have, or add new method and throw in the directory with the files and let it remove the rows.
Here is an quick example of xml-file.
<?xml version="1.0" encoding="UTF-8"?><root>
<envelope>
<node>
<node>
</node>
</node>
<envelope>
<envelope>
<node>
<node>
</node>
</node>
<envelope>
</root>
And he开发者_开发技巧re is the code i have which works now to split the xml.
public class JavaSplit {
public static void main(String[] args) throws Exception {
String path = "C:\\XMLFiles\\";
String nameXML = "CSV_SAMPLE_DATA.xml";
String file1 = path + nameXML;
String rootName = "root";
String childName = "envelope";
String attribute = "fileID";
JavaSplit.splitXMLFile(file1, path,rootName, childName, attribute);
}
public static void splitXMLFile (String file, String path, String rootName, String childName, String attribute) throws Exception {
String[] temp;
String[] temp2;
String[] temp3;
String[] temp4;
String[] temp5;
String[] temp6;
File input = new File(file);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
Document doc = dbf.newDocumentBuilder().parse(input);
XPath xpath = XPathFactory.newInstance().newXPath();
NodeList nodes = (NodeList) xpath.evaluate("//"+rootName+"/"+childName, doc, XPathConstants.NODESET);
Node staff = doc.getElementsByTagName(childName).item(0);
NamedNodeMap attr = staff.getAttributes();
Node nodeAttr = attr.getNamedItem(attribute);
String node = nodeAttr.toString();
temp = node.split("=");
temp2 = temp[1].split("^\"");
temp3 = temp2[1].split("\\.");
Document currentDoc = dbf.newDocumentBuilder().newDocument();
Node rootNode = currentDoc.createElement(rootName);
File currentFile = new File(path + temp3[0]+ ".xml");
for (int i=1; i <= nodes.getLength(); i++) {
Node imported = currentDoc.importNode(nodes.item(i-1), true);
rootNode.appendChild(imported);
Node staff2 = doc.getElementsByTagName(childName).item(i);
if (staff2 == null){
}
else{
NamedNodeMap attr2 = staff2.getAttributes();
Node nodeAttr2 = attr2.getNamedItem(attribute);
String node2 = nodeAttr2.toString();
temp4 = node2.split("=");
temp5 = temp4[1].split("^\"");
temp6 = temp5[1].split("\\.");
writeToFile(rootNode, currentFile);
rootNode = currentDoc.createElement(rootName);
currentFile = new File(path + temp6[0]+".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)));
}
}
Are you just trying to delete from all your files? For one-time edits like this, you could use a program like Notepad++ to check all the files in a directory and do a find/replace for that line. Just be sure to make a backup of the files because I don't recommend removing that line, since xml parsers should use that information and not parse it as data.
精彩评论