2015-01-08 3 views
0

XML에 대한 속성을 수정할 수없는 이유는 확실하지 않습니다. 아래의 코드는 XML에서 속성을 읽는 데 사용됩니다. 아무런 문제없이 속성을 가져옵니다.문서 트리의 XML 속성 값을 업데이트하십시오.

 document = documentBuilder.parse(file); 
     NodeList sessionNodelist = document.getElementsByTagName("session"); 
     if (sessionNodelist.getLength() > 0) 
     { 
      Element sessionElement = (Element) sessionNodelist.item(0); 
      String timeout = sessionElement.getAttribute("timeout"); 
      String warning = sessionElement.getAttribute("warning"); 
     } 

내가 설정하려고 할 때 작동하지 않으며 그 이유가 확실하지 않습니다. 코드는 다음과 같습니다. 그것은 atrible을 잡아 내는데 사용 된 코드와 정확히 똑같습니다.하지만 getAttribute 대신 두 개의 매개 변수를 사용하는 setAttribute를 사용했습니다. setAttribute (String name, String Value)

 document = documentBuilder.parse(file); 
     NodeList sessionNodelist = document.getElementsByTagName("session"); 
     if (sessionNodelist.getLength() > 0) 
     { 
      Element sessionElement = (Element) sessionNodelist.item(0); 
      sessionElement.setAttribute("timeout","12"); 
      sessionElement.setAttribute("warning", "10"); 
     } 

아이디어가 있으십니까?

+0

예상 무엇 다음과 같이

당신은 파일에 객체를 작성하는 javax.xml.transform.Transformer를 사용해야합니까? 요소 속성이 변경되고 있습니다. XML로 다시 저장 하시겠습니까? – manouti

+0

예, UI를 사용하면 값을 변경할 수 있으므로 xml에 새 값을 설정하고 있습니다. – user1158745

+0

속성이 변경되었거나 변경되지 않았 음을 어떻게 확인합니까? –

답변

0

XML 파일에 다시 문서 트리를 작성해야합니다. DOM 트리를 파일에 쓰는 방법은 this page을 참조하십시오. 여기

TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
Transformer transformer = transformerFactory.newTransformer(); 
DOMSource source = new DOMSource(document); 
StreamResult result = new StreamResult(file); 
transformer.transform(source, result); 
+0

좋아, 이것이 내가 필요한 것 같습니다. – user1158745

+0

마지막 질문, 내가 파일 경로를 쓰려고 할 때 somereason 때문에 프로그램 파일 내에 공백이 있다는 사실을 좋아하지 않는다. 이 문제를 해결할 수있는 방법은 없나요? 이스케이프 문자를 사용하고 있습니다. 예 : "C : \\ Progarm Files \\ test.xml" – user1158745