2016-11-05 6 views
1

XML 파일에 간단한 CRUD 작업을 수행 할 수있는 간단한 XML 웹 서비스를 제공하고 있습니다.반환 값이 올바르지 않음

private void Delete_Click(object sender, EventArgs e) 
    { 

     var student_ID = textBox1.Text.ToString(); 
     Boolean isDeleted = true; 
     ServiceReference1.StudentWSClient myRef = new ServiceReference1.StudentWSClient(); 
     ServiceReference1.DeleteResponse response = new ServiceReference1.DeleteResponse(); 
     myRef.Delete(student_ID); 
     if ([email protected] == isDeleted) 
     { 
      MessageBox.Show("Student Deleted", "Delete Student", MessageBoxButtons.OK); 
      textBox1.Text = ""; 
     } 
     else if([email protected] != isDeleted) 
     { 
      MessageBox.Show("Student_ID not found or An error has occured!", "Delete Student", MessageBoxButtons.OK); 
     } 
    } 
내가 요소가 삭제 된 경우, 다음 적절한 메시지 상자를 표시 확인 할

... 내 반환 값 : 비주얼 스튜디오 내 코드는 여기

@WebMethod(operationName = "Delete") 
public boolean Delete(String std_id) throws Exception { 
    File file = new File("C:/Users/user/Desktop/myStudentInstance/myStudentInstance.xml"); 
    boolean isDeleted = true; 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder db = dbf.newDocumentBuilder(); 
    org.w3c.dom.Document doc = db.parse(file); 
    NodeList root = doc.getElementsByTagName("Students"); 
    NodeList nList2 = doc.getElementsByTagName("student"); 
    for (int i = 0; i < nList2.getLength(); i++) { 
     Node nNode = root.item(0); 
     Node nNode2 = nList2.item(i); 
     Element eElement2 = (Element) nNode2; 

     if (eElement2.getElementsByTagName("Student_id").item(0).getTextContent().equals(std_id)) { 
      isDeleted = true; 
      nNode.removeChild(nNode2); 

     } else if (eElement2.getElementsByTagName("Student_id").item(0).getTextContent() != (std_id)) { 
      isDeleted = false; 

     } 

     DOMSource source = new DOMSource(doc); 

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

    } 
    System.out.println(isDeleted); 
    return isDeleted; 
} 

: 그리고 여기 내 클라이언트 코드의 삭제 된 것은 TRUE이지만 VS에서 응답을 확인하면 false로 표시되어 "Student_ID를 찾을 수 없거나 오류가 발생했습니다!"라고 표시됩니다. 하지만 요소는 여전히 삭제됩니다! 이유가 뭐예요? 항상 끝에서 처음으로 이동 목록에서 항목을 삭제 할 때마다

답변

0
isDeleted = myRef.Delete(student_ID); 

당신이 isDeleted에 반환 값을 할당하지 않은

+0

감사합니다 =) – lifeTech

0

위와 같이 할. 그렇지는 일

for (int i = nList2.getLength() - 1; i >= 0; i--) 
+0

감사를 할 경우 인덱싱 메모를 취할 것입니다, 엉망이됩니다 :) – lifeTech

관련 문제