0

次のxmlファイルがあります。

<abc>
  <sample name="xyz">
    <a>....</a>
  </sample>
  <sample name="pqr">
    <a>....</a>
  </sample>
</abc>    

削除する必要があり<sample name="xyz">ますが、削除ボタンをクリックするとすべての<sample>ノードが削除されますが、「xyz」という名前のノードのみを削除する必要があります。削除した後、xml ファイルを自動的に更新する必要があります。
これが私が使用した私のコードですが、うまくいきません

try{
   String xmlFile = "C:/practise.xml";
   File file = new File(xmlFile);
    String remElement = "sample";
   if (file.exists()){
   DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
   DocumentBuilder builder = factory.newDocumentBuilder();
   Document doc = builder.parse(xmlFile);
   TransformerFactory tFactory = TransformerFactory.newInstance();
   Transformer tFormer = tFactory.newTransformer();
   Element element = (Element)doc.getElementsByTagName(remElement).item(0); 
   element.getParentNode().removeChild(element);
    doc.normalize();
    Source source = new DOMSource(doc);
   Result dest = new StreamResult(System.out);
   tFormer.transform(source, dest);
   System.out.println("jhala re delete");
   //createOutputFile("C:/MyTestbeds/TestBed1.xml", transformToString(doc));
}
else{
     System.out.println("File not found!");
   }
}
catch (Exception e){
System.err.println(e);

}
}

コードの何が問題なのかわかりません。最初のノードを削除するときに、xml ファイルも更新する必要があります。

4

1 に答える 1

1

私のために働きます。問題を示すSSCCEを投稿してみてください。

import java.io.ByteArrayInputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
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;

public class TestXML {

    private static final String XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<abc>\r\n" + "<sample name=\"xyz\">\r\n"
            + "    <a>....</a>\r\n" + "  </sample>\r\n" + "  <sample name=\"pqr\">\r\n" + "    <a>....</a>\r\n" + "  </sample>\r\n"
            + "</abc>";

    public static void main(String[] args) {
        try {
            String remElement = "sample";
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse(new ByteArrayInputStream(XML.getBytes("UTF-8")));
            TransformerFactory tFactory = TransformerFactory.newInstance();
            Transformer tFormer = tFactory.newTransformer();
            Element element = (Element) doc.getElementsByTagName(remElement).item(0);
            element.getParentNode().removeChild(element);
            doc.normalize();
            Source source = new DOMSource(doc);
            Result dest = new StreamResult(System.out);
            tFormer.transform(source, dest);
        } catch (Exception e) {
            e.printStackTrace();

        }
    }
}
于 2012-11-27T09:53:37.667 に答える