2012-11-27 5 views
0

다음 XML 파일이 있습니다.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 파일을 업데이트해야합니다.

+0

정확하게 코드에서 '**'xyz' **라는 이름의 ''요소를 찾고 있음을 나타냅니다. 어떻게 든 코드에서'xyz'에 대한 언급을 보지 못했습니다. –

+0

내가 이것을 사용하는 것이 뜨겁지 않기 때문에 나는 이것을 언급하지 않는다는 것을 안다? –

+0

당신의 질문에, 당신은 다음과 같이 썼다. * 나는 나의 코드에서 무엇이 잘못되었는지를 이해하지 못한다. *,하지만 분명히, 당신은 코드에서 무엇이 잘못되었거나 누락되었는지 잘 알고있다. 누락 된 것이 무엇인지 구체적으로 물어보기 위해 질문을 변경하십시오 (조건부 실행? 속성 값 검색? 주어진 속성 값을 가진 요소 찾기 ...?). 또한 한 번에 한 가지 질문 만하십시오. 다른 문제 (XML 파일을 업데이 트)에 대한 별도의 질문을 엽니 다. –

답변

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(); 

     } 
    } 
} 
관련 문제