在项目中调用了1个远程的webservice接口,该接口返回1个document对象,然后我对他进行解析的时候,解析不出来,求各位大大帮忙,看看是什么原因。
代码如下:Object[] results = client.invoke("queryObjectOut", new Object[]{"01",jkxlh,"01111",queryXmlDoc});
String r = results[0].toString();
Document d = (Document) results[0];
NodeList nodeList = document.getElementsByTagName("student"); 
   for(int i=0;i<nodeList.getLength();i++){ 
    StringBuilder sb = new StringBuilder(); 
    sb.append("姓名:"+document.getElementsByTagName("name").item(i).getFirstChild().getNodeValue()); 
    sb.append(" , "); 
    sb.append("年龄:"+document.getElementsByTagName("age").item(i).getFirstChild().getNodeValue()); 
    sb.append(" , "); 
    sb.append("性别:"+document.getElementsByTagName("sex").item(i).getFirstChild().getNodeValue()); 
    sb.append(" , "); 
    sb.append("地址:"+document.getElementsByTagName("address").item(i).getFirstChild().getNodeValue()); 
    
    System.out.println(sb.toString()); 
这样做 查询结果为空,我打印nodelist.length为0。然而用这个方法又能打印出xml全部内容,代码如下:System.out.println("返回XML"+d.getFirstChild().getFirstChild().getTextContent());
我想问 我想取到 xml文件里面 这些字段的信息,该如何做呢?

解决方案 »

  1.   

    Document d = (Document) results[0];
    NodeList nodeList = document.getElementsByTagName("student"); 是这个问题导致的吗?
      

  2.   

    不是这个问题 - -这是我copy失误了, 实际上是同一个对象 不然也编译不过去啊。
      

  3.   

    这nodelist里面应该是有多个Element吧。给个简单的例子供楼主参考<?xml version="1.0" encoding="GBK"?>
      <information>
          <person>
              <name>张三</name>
              <age>19</age>
              <job>软件工程师</job>
              <employ-date>
                  <day>12</day>
                 <month>12</month>
                 <year>1989</year>
             </employ-date>
         </person>
         <person>
             <name>李四</name>
             <age>33</age>
             <job>测试工程师</job>
             <employ-date>
                 <day>10</day>
                 <month>9</month>
                 <year>2010</year>
             </employ-date>
         </person>
         <person>
             <name>王五</name>
             <age>28</age>
             <job>客服工程师</job>
             <employ-date>
                 <day>6</day>
                 <month>9</month>
                 <year>2001</year>
             </employ-date>
         </person>
         <person>
             <name>赵六</name>
             <age>33</age>
             <job>售前工程师</job>
             <employ-date>
                 <day>11</day>
                 <month>7</month>
                 <year>2000</year>
             </employ-date>
         </person>
         <person>
             <name>孙七</name>
             <age>27</age>
             <job>项目经理</job>
             <employ-date>
                 <day>6</day>
                 <month>8</month>
                 <year>2010</year>
             </employ-date>
         </person>
         <person>
             <name>龙五</name>
             <age>39</age>
             <job>总经理</job>
             <employ-date>
                 <day>3</day>
                 <month>4</month>
                 <year>1987</year>
             </employ-date>
         </person>
     </information>
     package com.xiong.dom;
     import java.io.File;
     
     import javax.xml.parsers.DocumentBuilderFactory;
     import javax.xml.parsers.DocumentBuilder;
     
     import org.w3c.dom.Document;
     import org.w3c.dom.Element;
     import org.w3c.dom.NodeList;
     
     public class XMLReader
     {
         public static void main(String[] args)
         {
             DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
             DocumentBuilder builder=null;
             try
             {
                 builder=dbf.newDocumentBuilder();
             }
             catch(Exception ex)
             {
                 ex.printStackTrace();
             }
             Document doc=null;
             try
             {
                 doc=builder.parse(new File("E:"+File.separator+"webstudy"+File.separator+"Information.xml"));
             }
             catch(Exception ex)
             {
                 ex.printStackTrace();
             }
             NodeList nodelist=doc.getElementsByTagName("person");
             for(int i=0;i<nodelist.getLength();i++)
             {
                 Element link=(Element)nodelist.item(i);
                 System.out.println("姓名:"+link.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
                 System.out.println("年龄:"+link.getElementsByTagName("age").item(0).getFirstChild().getNodeValue());
                 System.out.println("职业:"+link.getElementsByTagName("job").item(0).getFirstChild().getNodeValue());            
                 Element employdate=(Element)link.getElementsByTagName("employ-date").item(0);            
                 String day=employdate.getElementsByTagName("day").item(0).getFirstChild().getNodeValue();
                 String month=employdate.getElementsByTagName("month").item(0).getFirstChild().getNodeValue();
                 String year=employdate.getElementsByTagName("year").item(0).getFirstChild().getNodeValue();
                 System.out.println("雇佣日期:"+year+"-"+month+"-"+day);            
             }        
         }
     }
      

  4.   

    解析xml文件,要注意xml文件中的节点结构啊。