在java中修改文件夹中的xml文件
由于我是java新手,我需要一些使用java修改xml文件的帮助。我想用另一个子标记添加一个子标记。我已尝试使用file获取所有文件。出于解析和修改的目的,我使用DocumentBuildFactory和元素。但在DocumentBuilder的parse方法中,文件不会显示为null 输入:-在java中修改文件夹中的xml文件,java,xml,Java,Xml,由于我是java新手,我需要一些使用java修改xml文件的帮助。我想用另一个子标记添加一个子标记。我已尝试使用file获取所有文件。出于解析和修改的目的,我使用DocumentBuildFactory和元素。但在DocumentBuilder的parse方法中,文件不会显示为null 输入:- <Student> <personal-details> <name>abc</name> <age>21</age
<Student>
<personal-details>
<name>abc</name>
<age>21</age>
</personal-details>
<address>
<zip>560037</zip>
</address>
</Student>
<Student>
<personal-details>
<name>abc</name>
<age>21</age>
</personal-details>
<address>
<place>
<line1>some lane</line1>
</place>
<zip>560037</zip>
</address>
</Student>
abc
21
560037
我想在address标记中添加一个子元素,并期望得到如下输出:-
输出:-
<Student>
<personal-details>
<name>abc</name>
<age>21</age>
</personal-details>
<address>
<zip>560037</zip>
</address>
</Student>
<Student>
<personal-details>
<name>abc</name>
<age>21</age>
</personal-details>
<address>
<place>
<line1>some lane</line1>
</place>
<zip>560037</zip>
</address>
</Student>
abc
21
某条小路
560037
下面是我编写的java代码
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
public class AddTag {
public static void main(String[] args) {
File folder = new File("C:\\Users\\Desktop\\xmlfiles\\");
File listOfFiles [] =folder.listFiles();
String fileName = null;
for(int i=0;i<listOfFiles.length;i++)
{
fileName = listOfFiles[i].getName();
try{
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(folder+"\\"+fileName);
System.out.println(doc); // op:-[#document: null]
Node address = doc.getElementsByTagName("address").item(0);
Element place = doc.createElement("place");
place.appendChild(doc.createElement("line1").appendChild(doc.createTextNode("some lane")));
address.appendChild(place);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(folder+"\\"+fileName));
transformer.transform(source, result);
System.out.println("Done");
}catch(Exception e){
}
}
}
}
导入java.io.File;
导入javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入org.w3c.dom.Document;
导入org.w3c.dom.Element;
导入org.w3c.dom.Node;
公共类AddTag{
公共静态void main(字符串[]args){
文件夹=新文件(“C:\\Users\\Desktop\\xmlfiles\\”;
文件listOfFiles[]=folder.listFiles();
字符串文件名=null;
对于(int i=0;i这一行:
place.appendChild(doc.createElement("line1").appendChild(doc.createTextNode("some lane")));
将“some lane”文本节点追加到Place节点。appendChild返回根据文档添加的节点:
返回:添加的节点
所以把它分开,它应该会起作用。
试着这样做:
Node line1 = doc.createElement("line1");
line1.appendChild(doc.createTextNode("some lane"));
place.appendChild(line1);