2011-12-20 2 views
3

XPath를 통해 노드 값을 설정하려고합니다. 다음과 같은 있지만 실제 파일 값을 변경하려면 보이지 않습니다.XPath Java를 사용하여 노드 값 설정

XPathFactory factory = XPathFactory.newInstance(); 
XPath xPath = factory.newXPath(); 

xPathExpression = "//test"; 
xPathValue= "111"; 

NodeList nodes = (NodeList) xPath.evaluate(xPathExpression, new InputSource(new FileReader(fileName)), XPathConstants.NODESET); 

for (int k = 0; i < nodes.getLength(); i++) 
{ 
    System.out.println(nodes.item(k).getTextContent()); // Prints original value 
    nodes.item(k).setTextContent(xPathValue); 
    System.out.println(nodes.item(k).getTextContent()); // Prints 111 after 
} 

그러나 해당 노드의 파일 내용은 변경되지 않습니다.

어떻게 노드의 값을 설정합니까?

감사

답변

2

당신은 단순히 아니라 파일 자체에 메모리에 값을 변경하고 있습니다. 당신은 파일에서 다시 수정 된 문서를 작성해야합니다 :

Source source = new DOMSource(doc); 
Result result = new StreamResult(new File(fileName)); 
Transformer xformer; 
try { 
    xformer = TransformerFactory.newInstance().newTransformer(); 
    xformer.transform(source, result); 
} catch (TransformerConfigurationException e) { 
    // TODO Auto-generated catch block 
} catch (TransformerFactoryConfigurationError e) { 
    // TODO Auto-generated catch block 
} catch (TransformerException e) { 
    // TODO Auto-generated catch block 
} 

이 클래스는 모든 javax.xml.transform.*에서 왔습니다.

(물론 문서에 대한 참조를 저장해야 다시 쓸 수 있습니다 (예 : evaluate으로 직접 전달할 수 없음).

관련 문제