首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 可以帮忙解释下这段代码吗??老师要提问的!! [已结帖,结帖人:java2000_net]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wind70713
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2007-12-30 16:29:07 楼主
    import org.w3c.dom.*;
    import javax.xml.parsers.*;
    import java.io.*;
    import javax.xml.transform.*;
    import javax.xml.transform.stream.*;
    import javax.xml.transform.dom.*;
    public class JAXPTwo
    {
    public static void main(String args[])
    {
    try
    {
    while(true)
    {
    RegInsert(InsertInfo());
    System.out.print("继续注册(Y/N)?");
    if(readInput()=="N")
    break;
    }
    }
    catch(Exception e)
    {
    System.out.println(e);
    }
    }
    public static String[] InsertInfo()
    {
    String[] array=new String[10];
    String temp;
    try
    {
    System.out.print("请输入姓名:");
    array[0]=readInput();

    System.out.print("请输入生日:");
    array[1]=readInput();

    // while(true)
    // {
    System.out.print("请输入邮箱:");
    array[2]=readInput();
    // if(CheckMail(array[2]))
    // System.out.print("该邮箱已经注册");
    // else
    // break;
    // }
    System.out.print("请输入密码:");
    array[3]=readInput();
    System.out.print(array[3]);
    n
    System.out.print("请输入毕业学校:");
    array[4]=readInput();

    System.out.print("请输入毕业年份:");
    array[5]=readInput();

    System.out.print("请输入通讯地址:");
    array[6]=readInput();

    System.out.print("请输入书籍:");
    array[7]=readInput();

    System.out.print("请输入婚姻状况:");
    array[8]=readInput();
    }
    catch(Exception e)
    {
    System.out.println(e);
    }

    return array;
    }
    public static boolean CheckMail(String mail)
    {
    boolean temp=false;
    try
    {
    DocumentBuilderFactory  factory=DocumentBuilderFactory.newInstance();
    DocumentBuilder  builder= factory. newDocumentBuilder();


    Document document= builder.parse(new File("reg.xml"));
    NodeList nodelist=document.getElementsByTagName("用户");


    for(int k=0;k <nodelist.getLength();k++)
    {
    Node node=nodelist.item(k);
    NodeList child=node.getChildNodes();
    String tmail=child.item(5).getFirstChild().getNodeValue();
    if(tmail==mail)
    {
    temp=true;
    break;
    }
    }
    }
    catch(Exception e)
    {
    System.out.println(e);
    }
    return temp;
    }
    public static void RegInsert(String array[])
    {
    try {
    DocumentBuilderFactory  factory=DocumentBuilderFactory. newInstance();
    DocumentBuilder  builder= factory. newDocumentBuilder();

    Document  document= builder.parse(new File("reg.xml"));

    Element root = document.getDocumentElement();

    Element userNode = document.createElement("用户");
    Element nameNode = document.createElement("姓名");
    Element birthdayNode = document.createElement("生日");
    Element mailNode = document.createElement("邮箱");
    Element passwordNode = document.createElement("密码");
    Element schoolNode = document.createElement("毕业学校");
    Element datatimeNode = document.createElement("毕业年份");
    Element addressNode = document.createElement("通讯地址");
    Element bookNode = document.createElement("书籍");
    Element marryNode = document.createElement("婚姻状况");



    Text nameValue = document.createTextNode(array[0]);
    Text birthdayValue = document.createTextNode(array[1]);
    Text mailValue = document.createTextNode(array[2]);
    Text passwordValue = document.createTextNode(array[3]);
    Text schoolValue = document.createTextNode(array[4]);
    Text datatimeValue = document.createTextNode(array[5]);
    Text addressValue = document.createTextNode(array[6]);
    Text bookValue = document.createTextNode(array[7]);
    Text marryValue = document.createTextNode(array[8]);


    nameNode.appendChild(nameValue);
    birthdayNode.appendChild(birthdayValue);
    mailNode.appendChild(mailValue);
    passwordNode.appendChild(passwordValue);
    schoolNode.appendChild(schoolValue);
    datatimeNode.appendChild(datatimeValue);
    addressNode.appendChild(addressValue);
    bookNode.appendChild(bookValue);
    marryNode.appendChild(marryValue);



    userNode.appendChild(nameNode);
    userNode.appendChild(birthdayNode);
    userNode.appendChild(mailNode);
    userNode.appendChild(passwordNode);
    userNode.appendChild(schoolNode);
    userNode.appendChild(datatimeNode);
    userNode.appendChild(addressNode);
    userNode.appendChild(bookNode);
    userNode.appendChild(marryNode);

    root.appendChild(userNode);


    TransformerFactory transFactory = TransformerFactory.newInstance();
    Transformer transformer = transFactory.newTransformer();

    transformer.setOutputProperty("encoding", "gb2312");
    DOMSource domSource = new DOMSource(document);
    File file = new File("reg.xml");
    FileOutputStream out = new FileOutputStream(file);
    StreamResult xmlResult = new StreamResult(out);
    transformer.transform(domSource, xmlResult);

    }         
    catch(Exception e)
    {
    System.out.println(e);
    }
    }

    public static String readInput()throws IOException
    {
    BufferedReader br;
    String str="";
    br=new BufferedReader(new InputStreamReader(System.in));
    str=br.readLine();
    return str;
    }
    }

    谢谢了··那位高手可以帮下!!最好解释到每行····
    90  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lyp464686109
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-31 14:28:461楼 得分:13
    不懂,up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pengchao_214
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-31 17:27:072楼 得分:13
    運行下就知道了,
    好像一個根據提示,讓你輸入你的個人信息,
    然後再以文件的形式保存到xml文件裡面
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • java2000_net
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      2

    发表于:2007-12-31 18:11:313楼 得分:0
    我只写了部分重要的注释,其他的自己理解吧!
    另:顺便修正了1个BUG

    Java code
    package test; import org.w3c.dom.*; import javax.xml.parsers.*; import java.io.*; import javax.xml.transform.*; import javax.xml.transform.stream.*; import javax.xml.transform.dom.*; public class JAXPTwo { public static void main(String args[]) { try { while (true) { RegInsert(InsertInfo()); // 输入数据并保存到xml文件 System.out.print("继续注册(Y/N)?"); // 继续下一个? if ("N".equalsIgnoreCase(readInput())) // if (readInput() == "N") 有错误 break; } } catch (Exception e) { System.out.println(e); } } public static String[] InsertInfo() { String[] array = new String[10]; // String temp; // 这个变量没有使用??? try { System.out.print("请输入姓名:"); // 开始输入各种信息 array[0] = readInput(); // 从键盘读取信息 System.out.print("请输入生日:"); array[1] = readInput(); // while(true) // { System.out.print("请输入邮箱:"); array[2] = readInput(); // if(CheckMail(array[2])) // System.out.print("该邮箱已经注册"); // else // break; // } System.out.print("请输入密码:"); array[3] = readInput(); // System.out.print(array[3]); // 这一句去掉吧 System.out.print("请输入毕业学校:"); array[4] = readInput(); System.out.print("请输入毕业年份:"); array[5] = readInput(); System.out.print("请输入通讯地址:"); array[6] = readInput(); System.out.print("请输入书籍:"); array[7] = readInput(); System.out.print("请输入婚姻状况:"); array[8] = readInput(); } catch (Exception e) { System.out.println(e); } return array; } public static boolean CheckMail(String mail) { boolean temp = false; try { // 打开reg.xml DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new File("reg.xml")); // 拿到所有的用户节点 NodeList nodelist = document.getElementsByTagName("用户"); // 循环判断是否存在重复的email for (int k = 0; k < nodelist.getLength(); k++) { Node node = nodelist.item(k); NodeList child = node.getChildNodes(); String tmail = child.item(5).getFirstChild().getNodeValue(); if (tmail == mail) { temp = true; break; } } } catch (Exception e) { System.out.println(e); } return temp; } public static void RegInsert(String array[]) { try { // 解析reg.xml文件 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new File("reg.xml")); // 得到根节点 Element root = document.getDocumentElement(); // 创建用户节点 Element userNode = document.createElement("用户"); // 创建下面的子节点 Element nameNode = document.createElement("姓名"); Element birthdayNode = document.createElement("生日"); Element mailNode = document.createElement("邮箱"); Element passwordNode = document.createElement("密码"); Element schoolNode = document.createElement("毕业学校"); Element datatimeNode = document.createElement("毕业年份"); Element addressNode = document.createElement("通讯地址"); Element bookNode = document.createElement("书籍"); Element marryNode = document.createElement("婚姻状况"); // 创建节点的值 Text nameValue = document.createTextNode(array[0]); Text birthdayValue = document.createTextNode(array[1]); Text mailValue = document.createTextNode(array[2]); Text passwordValue = document.createTextNode(array[3]); Text schoolValue = document.createTextNode(array[4]); Text datatimeValue = document.createTextNode(array[5]); Text addressValue = document.createTextNode(array[6]); Text bookValue = document.createTextNode(array[7]); Text marryValue = document.createTextNode(array[8]); // 节点与节点值对应 nameNode.appendChild(nameValue); birthdayNode.appendChild(birthdayValue); mailNode.appendChild(mailValue); passwordNode.appendChild(passwordValue); schoolNode.appendChild(schoolValue); datatimeNode.appendChild(datatimeValue); addressNode.appendChild(addressValue); bookNode.appendChild(bookValue); marryNode.appendChild(marryValue); // 子节点放到用户节点下 userNode.appendChild(nameNode); userNode.appendChild(birthdayNode); userNode.appendChild(mailNode); userNode.appendChild(passwordNode); userNode.appendChild(schoolNode); userNode.appendChild(datatimeNode); userNode.appendChild(addressNode); userNode.appendChild(bookNode); userNode.appendChild(marryNode); // 用户放到根节点 root.appendChild(userNode); TransformerFactory transFactory = TransformerFactory.newInstance(); Transformer transformer = transFactory.newTransformer(); // 传输的编码为中文 transformer.setOutputProperty("encoding", "gb2312"); // 保存到文件reg.xml DOMSource domSource = new DOMSource(document); File file = new File("reg.xml"); FileOutputStream out = new FileOutputStream(file); StreamResult xmlResult = new StreamResult(out); transformer.transform(domSource, xmlResult); } catch (Exception e) { System.out.println(e); } } public static String readInput() throws IOException { BufferedReader br; String str = ""; // 从键盘读取一行输入,回车结束 br = new BufferedReader(new InputStreamReader(System.in)); str = br.readLine(); return str; } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • joejoe1991
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-31 18:13:314楼 得分:13
    java操作XML文件。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhang116868
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-01 12:29:525楼 得分:13
    三楼的牛人,这么长我都看不下去了,你还个个解释!牛皮!
    顶下啊!哈哈
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhang116868
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-01 12:29:556楼 得分:0
    三楼的牛人,这么长我都看不下去了,你还个个解释!牛皮!
    顶下啊!哈哈
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhuode_001
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-01 14:57:587楼 得分:13
    没有注释,没有缩进,同样看不下去.
    三楼牛人
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • AutumnHealth
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-01 16:24:508楼 得分:13
    有什么,拷出来放在IDE里一个快捷键就排版好了

    既然老师要提问,建议楼主踏踏实实去学。不然每次老师提问,你都得来问别人,那你到底能学会什么呢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • goodmrning
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-01 21:04:409楼 得分:12
    三楼的牛人牛皮!
    顶下!
    还是那个字:牛皮!
    修改 删除 举报 引用 回复