Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正在写入(重写)与我读取的相同的XML文件_Java_Xml - Fatal编程技术网

Java 正在写入(重写)与我读取的相同的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文件的方法,但现在我需要使用相同的标记、节点和对象编写或重写相同的XML文件,但子节点中的数据不同

首先,我想让读写工作正常,然后我有了一些想法,可以将整个XML文件放入缓冲区。然后我可以将整个XML放在一个类下,然后将该类再次写入同一个XML。这只是一个想法,欢迎任何建议或想法

我的XML文件如下所示:

<?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循环中为每个子节点保存文件?