gpt4 book ai didi

java - 删除 xml 版本控制 + 启动节点

转载 作者:行者123 更新时间:2023-12-01 15:49:39 24 4
gpt4 key购买 nike

我需要拆分一个 xml 文件,这有效,但我发现我不需要该部分和 .我将它分成 1000 个文件,这样我是否可以更改已有的代码,或者添加新方法并将文件放入目录中并让它删除行。

这是 xml 文件的一个简单示例。

<?xml version="1.0" encoding="UTF-8"?><root>
<envelope>
<node>
<node>
</node>
</node>
<envelope>
<envelope>
<node>
<node>
</node>
</node>
<envelope>

</root>

这是我现在可以用来分割 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)));
}

}

最佳答案

您是否只是想删除所有文件?对于这样的一次性编辑,您可以使用像 Notepad++ 这样的程序来检查目录中的所有文件,并对该行进行查找/替换。请务必备份文件,因为我不建议删除该行,因为 xml 解析器应该使用该信息而不是将其解析为数据。

关于java - 删除 xml 版本控制 + 启动节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6373935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com