话不多说,开始粘代码
public void Write() 
{
//这个是写入XML的一个方法
OutputFormat of = OutputFormat.createCompactFormat();
                   of.setIndent("  ");
of.setNewlines(true);
of.setEncoding("gbk");
try {
        XMLWriter xml = new XMLWriter(new FileOutputStream("pe.xml"),of);
       xml.write(TestCheck.d6);
      //这里写入一个静态的document,为何写不进去?
      } catch (Exception e) {
          // TODO 自动生成的 catch 块
       e.printStackTrace();
}
System.out.println("修改完毕!已保存!");
}
public void Reviseall() 
{//这里是修改全部的方法,开启两个输入流,第一个输入要修改的ID号
Scanner sc1 = new Scanner(System.in);
List<Element> list = new ArrayList<Element>();
list = TestCheck.getRootElement().elements();
String ss = sc1.next();
ob: while (true) 
{

             for (Element e : list) 
                          {
if(TestCheck.checkIDNotSame(ss).equals(e.attributeValue("id")))
{
                       System.out.println(ss);
                       System.out.println("不用输入要替换的名字!");
//Scanner sc2 = new Scanner(System.in);
                                     //System.out.println(e.elementText("name");
                                   e.element("name").setText("da");
                                        //System.out.println(e.element("name").getText());
                 Write();//这里在遍历完毕之后写入进去
break ob;
}
}
}
}
public static String checkIDNotSame(String ID)
{//检查是否存在ID
List<Element> list = new ArrayList();
list = getRootElement().elements();
obb15: while (true) 
{
for (Element e : list) 
                {
if (e.attributeValue("id").equals(ID)) 
{
break obb1;
                  //也就是说,当查找到ID的时候,我们就终止循环
}
}
System.out.println("ID不存在!");
}
System.out.println("我输入的ID为"+ID);
return ID;
}
switch (i) {
case 1:
                           System.out.println("请输入要修改学生的ID");
tr.Reviseall();
break;

解决方案 »

  1.   

    占用一下沙发,这就是一个java解析XML文件,用一个xml文件来模拟一个数据库进行增删改查,这个是修改,
    整个流程是,调用 reviseall来进行修改全部学生信息,然后进入增强for来遍历,然后进入一个判断ID是否存在的一个方法,它接受一个
    字符串型,我在调用时就把scanner接受到的输入传递进去,进行判断ID是否存在,如果存在就把XML文件的名字更改掉,
    现在问题是,当我传入进去并判断成功之后,整个流程下来并没有写入到XML文件里去,而这个ID又是判断成功的
    如果把那个判断ID的方法去掉,直接用scanner接受的输入进行判断就可以修改成功,一直没想明白为何,