Java 正在写入(重写)与我读取的相同的XML文件
我创建了一个读取XML文件的方法,但现在我需要使用相同的标记、节点和对象编写或重写相同的XML文件,但子节点中的数据不同 首先,我想让读写工作正常,然后我有了一些想法,可以将整个XML文件放入缓冲区。然后我可以将整个XML放在一个类下,然后将该类再次写入同一个XML。这只是一个想法,欢迎任何建议或想法 我的XML文件如下所示:Java 正在写入(重写)与我读取的相同的XML文件,java,xml,Java,Xml,我创建了一个读取XML文件的方法,但现在我需要使用相同的标记、节点和对象编写或重写相同的XML文件,但子节点中的数据不同 首先,我想让读写工作正常,然后我有了一些想法,可以将整个XML文件放入缓冲区。然后我可以将整个XML放在一个类下,然后将该类再次写入同一个XML。这只是一个想法,欢迎任何建议或想法 我的XML文件如下所示: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Document Root --
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Document Root -->
<DATA>
<Settings USERNAME="test" PASSWORD="test" STATUS="active" / >
</DATA>
这是我的阅读代码:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class Read {
private final static String SETTINGS_LINE = Settings;
public void readXML() {
try {
File xmlFile = new File("Test.xml");
DocumentBuilderFactory documentFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentFactory.newDocumentBuilder();
Document doc = documentBuilder.parse(xmlFile);
// Normalize the XML file
doc.getDocumentElement().normalize();
NodeList nodeList = doc.getDocumentElement().getChildNodes();
for(int temp = 0; temp < nodeList.getLength(); temp++) {
Node node = nodeList.item(temp);
if(node instanceof Element && node.getNodeName() == SETTINGS_LINE) {
Element settings = (Element) node;
System.out.println("User" +settings.getAttribute("USERNAME"));
System.out.println("Password" +settings.getAttribute("PASSWORD"));
System.out.println("Status" +settings.getAttribute("STATUS"));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
import javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入org.w3c.dom.Document;
导入org.w3c.dom.Element;
导入org.w3c.dom.NodeList;
公开课阅读{
私有最终静态字符串设置\u LINE=设置;
public void readXML(){
试一试{
File xmlFile=新文件(“Test.xml”);
DocumentBuilderFactory documentFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder DocumentBuilder=documentFactory.newDocumentBuilder();
Document doc=documentBuilder.parse(xmlFile);
//规范化XML文件
doc.getDocumentElement().normalize();
NodeList NodeList=doc.getDocumentElement().getChildNodes();
对于(int-temp=0;temp
这是写不起作用的代码:
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class Modify {
private final static String SETTINGS_LINE = "Settings";
public static void main(String argv[]) {
try {
String filepath = "test.xml";
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
// Normalize the XML File
doc.getDocumentElement().normalize();
NodeList nodeList = doc.getDocumentElement().getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node instanceof Element && node.getNodeName() == SETTINGS_LINE) {
Element settings = (Element) node;
if("USERNAME".equals(node.getChildNodes())){
node.setTextContent("mivnadic");
}
}
// Write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(filepath));
transformer.transform(source, result);
}
System.out.println("File saved");
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
} catch (TransformerException tfe) {
tfe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (SAXException sae) {
sae.printStackTrace();
}
}
}
导入java.io.File;
导入java.io.IOException;
导入javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入javax.xml.parsers.parserConfiguration异常;
导入javax.xml.transform.Transformer;
导入javax.xml.transform.TransformerException;
导入javax.xml.transform.TransformerFactory;
导入javax.xml.transform.dom.DOMSource;
导入javax.xml.transform.stream.StreamResult;
导入org.w3c.dom.Document;
导入org.w3c.dom.Element;
导入org.w3c.dom.Node;
导入org.w3c.dom.NodeList;
导入org.xml.sax.SAXException;
公共类修改{
私有最终静态字符串设置\u LINE=“设置”;
公共静态void main(字符串argv[]){
试一试{
字符串filepath=“test.xml”;
DocumentBuilderFactory docFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder=docFactory.newDocumentBuilder();
//规范化XML文件
doc.getDocumentElement().normalize();
NodeList NodeList=doc.getDocumentElement().getChildNodes();
for(int i=0;i
详细说明“不工作”运行代码时不会发生任何事情。我想用这个“虚拟”名称更改用户名。。现在,我还试图让编程环境中的文档构建文件被高估。可以从stdin
读取,写入stdout
,还可以通过I/O重定向调用程序来读取/写入文件。例如java-jar program.jar
此外,还需要java吗?对于xslt处理器来说,这似乎是一项不错的工作。一定会有事情发生。控制台中打印了什么?在调试器中逐行执行代码时会发生什么?为什么要保存一个空文档?为什么要在for循环中为每个子节点保存文件?