2

なぜこれがうまくいかないのか誰か教えてもらえますか?それは私を夢中にさせています。

myFile.xml

<?xml version="1.0" encoding="UTF-8" ?>
<root date="oldValue" />     

Java コード

try {
    Document doc = builder.parse(new File("myFile.xml"));
    Element root = doc.getDocumentElement();
    System.out.println("date: " + root.getAttribute("date") + "\n");
    root.setAttribute("date", "test");
    System.out.println("date: " + root.getAttribute("date"));
}  catch (Exception e)  {
    System.out.println("Something went wrong.");
}

出力

oldValue
oldValue

何をしても、コードを XML ファイルに書き込むことができません...ルートの子ノードで setAttribute() 関数を実行しようとしました。ルートを削除しようとしました...何も機能しません。私はイライラしているので、助けていただければ幸いです。ありがとう。

4

2 に答える 2

1

あなたのコードは、.xml ファイルではなく、Element オブジェクトに書き込むだけでした (ただし、コードを実行したときの出力は次のとおりです。

             date: oldValue

             date: test

.xml ファイルに書き込むには、次を使用します。

try
      {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse(new File("myFile.xml"));

        Element root = doc.getDocumentElement();
        System.out.println("date: " + root.getAttribute("date") + "\n");
        root.setAttribute("date", "test");

        // 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("myFile.xml"));
        transformer.transform(source, result);


        System.out.println("date: " + root.getAttribute("date"));

      }
    catch (TransformerException | SAXException | ParserConfigurationException | IOException e )
      {
        System.out.println("Something went wrong");
        e.printStackTrace();
      }
于 2015-07-03T11:21:21.380 に答える
1

以下と同じコードに従っていますか?これは私にとってはうまくいきます(myFile.xmlの同じ内容で):

public static void main(String... args) throws Exception {
    DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();

    try{
        Document doc = builder.parse(new File("myFile.xml"));
        Element root = doc.getDocumentElement();
        System.out.println("date: " + root.getAttribute("date") + "\n");
        root.setAttribute("date", "test");
        System.out.println("date: " + root.getAttribute("date"));
    } catch (Exception e) {
        System.out.println("Something went wrong.");
    }
}
于 2012-08-21T23:16:22.767 に答える