2016-11-05 10 views
1

Я работаю над простой XML-сетью, которая позволяет выполнять простые операции CRUD в файле XML. Вот мой код клиента:возвращаемое значение недействительно

@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; 
} 

А вот мой код на Visual Studio:

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

Я хочу, чтобы проверить, если элемент был удален, а затем отобразить соответствующее сообщение окна ... мое возвращение значения, когда deleted is 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

 Смежные вопросы

  • Нет связанных вопросов^_^