开发者

Remove xml versioning + Start Node

开发者 https://www.devze.com 2023-03-13 06:14 出处:网络
I needed to split an xml-file, that worked but than i discovered that I don\'t need the partand . I split it into 1000 files so is it possible that i can alter the code that i already have, or add ne

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号