<?xml version="1.0" encoding="GB2312" standalone="no"?><books><classes name="武侠"><item><name>古侠今遇</name><author>醉人岁月</author><synopsis>与世隔绝三百年......</synopsis></item><item><name>寒剑孤灯</name><author>忧郁丁香</author><synopsis>寒剑孤灯......</synopsis></item></classes><classes name="言情"></classes></books>

解决方案 »

  1.   

    // 1.得到DOM解析器的工厂实例
    DocumentBuilderFactory dbff = DocumentBuilderFactory.newInstance();
    // 2.从DOM工厂获得DOM解析器
    DocumentBuilder bb = dbff.newDocumentBuilder();
    // 3.解析XML文档,得到一个Document,即DOM树
    Document doc = bb.parse("src\\booksvi.xml");
    // 4.得到class所有节点列表信息
    NodeList list = doc.getElementsByTagName("classes");
    // 5.得到图书简介信息列表
    List<String> lis1=new ArrayList<String>();
    for (int i = 0; i <list.getLength(); i++) {
    Node booksNode =list.item(i);
    Element booksElement = (Element)booksNode;
    String sr=booksElement.getAttribute("name");
    lis1.add(sr);
    }
    List<Books> lis2=new ArrayList<Books>();
    NodeList list5 = doc.getElementsByTagName("item");
    for (int i = 0; i <list5.getLength(); i++) {
    Node booksNode1 =list.item(i);
    Element booksElement1 = (Element)booksNode1;
    String name=booksElement1.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
    String author=booksElement1.getElementsByTagName("author").item(0).getFirstChild().getNodeValue();
    String synopsis=booksElement1.getElementsByTagName("synopsis").item(0).getFirstChild().getNodeValue();
    Books booksi=new Books();
    booksi.setName(name);
    booksi.setAuthor(author);
    booksi.setSynopsis(synopsis);
    lis2.add(booksi);
    }                                                         
    datas.setLis1(lis1);
    datas.setLis2(lis2);
      

  2.   

    String name=booksElement1.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
    代码执行到上一行就一直在报下面的错误,查看源代码,没发现错误啊?请大师们帮看看问题出在哪里?
    Exception in thread "Thread-0" java.lang.NullPointerException
    at com.jbit.server.ServerContextListener.run(ServerContextListener.java:118)
      

  3.   

    你要完整检查下:
      booksElement1.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
    这个内容,其中哪项就已经是 null 了。比如: booksElement1.getElementsByTagName("name") 可能就是null你如果不熟悉断点调试的话,可以:
    System.out.println(booksElement1.getElementsByTagName("name"));
    System.out.println(booksElement1.getElementsByTagName("name").item(0));
    System.out.println(booksElement1.getElementsByTagName("name").item(0).getFirstChild());
      

  4.   

    System.out.println(booksElement1.getElementsByTagName("name"));添加这行不会报错;
    System.out.println(booksElement1.getElementsByTagName("name").item(0));添加这行报错如下:java.net.BindException: Address already in use: JVM_Bind
    at java.net.TwoStacksPlainSocketImpl.socketBind(Native Method)
    at java.net.AbstractPlainSocketImpl.bind(Unknown Source)
    at java.net.TwoStacksPlainSocketImpl.bind(Unknown Source)
    at java.net.PlainSocketImpl.bind(Unknown Source)
    at java.net.ServerSocket.bind(Unknown Source)
    at java.net.ServerSocket.<init>(Unknown Source)
    at java.net.ServerSocket.<init>(Unknown Source)
    at com.jbit.server.ServerContextListener.run(ServerContextListener.java:57),57行即:serverSocket = new ServerSocket(Integer.parseInt(Tools.getValue(SysConstants.SYS_LISTENERPORT)));
      

  5.   

    Tools类如下:
    public class Tools {
    private static Properties p = new Properties(); /**
     * 读取properties配置文件信息
     */
    static{
    try {
    p.load(Tools.class.getClassLoader().getResourceAsStream(SysConstants.SYS_PROPERTYNAME));
    } catch (IOException e) {
    e.printStackTrace(); 
    }
    }
    /**
     * 根据key得到value的值
     */
    public static String getValue(String key)
    {
    return p.getProperty(key);
    }
    }也没错啊?
      

  6.   

    java.net.BindException: Address already in use: JVM_Bind这个不是语句的问题,是你重复启动应用程序了;也就是前面那个没关掉,所以端口冲突了。
      

  7.   

    其中,
    SYS_PROPERTYNAME = "sys.properties"
    SYS_LISTENERPORT = "PORT"
    配置文件sys.properties里面的信息如下:
    HOST=localhost
    PORT=8888
    都没发现错误啊?
      

  8.   

    没有端口冲突问题了,当System.out.println(booksElement1.getElementsByTagName("name").item(0));出现问题是:[name: null]
    Exception in thread "Thread-0" java.lang.NullPointerException
    at com.jbit.server.ServerContextListener.run(ServerContextListener.java:119)
    null
    提示说我的name是null,可我xml档里明明有啊?