try {
SAXBuilder builder = new SAXBuilder(); // 构造一个XML解散析器 String condition_df = "http://10.180.10.108:7001/docroot/Servlet_ETLData_Impl?JKID=4&ETLID=4&Conditions="
+ customer_id + "," + query_date + "," + query_year; String condition_qf = "http://10.180.10.108:7001/docroot/Servlet_ETLData_Impl?JKID=1&ETLID=1&Conditions="
+ customer_id; url_df = new URL(condition_df); // 用webservice地址构造一个URL对象 urlconn_df = url_df.openConnection(); // 打开这个http连接 dis_df = new DataInputStream(urlconn_df.getInputStream()); // 用DataInputStream把从webservice获得的数据流进行格式化 Document doc_df = builder.build(dis_df); // 构造一个查询电费的Document对象 Element root_df = doc_df.getRootElement(); // 获得查询电费的根元素 List child = root_df.getChildren(); // 获得此根元素下的所有元素 Element resqcode_element = (Element) child.get(3); // 获得根元素下的第4个元素(元素是从0开始)。也就是ResqCode元素 // 判断成功与否,1表示成功
if (Integer.parseInt(resqcode_element.getText()) != 1) {
return null;
} Element query_element = (Element) child.get(2); // 获得根元素下的第3个元素(元素是从0开始)。也就是QryLst元素 List query_sub_element = query_element.getChildren(); // 获得QryLst元素下所有的子元素 Element pb_row_element = (Element) query_sub_element.get(0); // 获得Pb_Row1元素下的第1个元素(元素是从0开始)。也就是Pb_Row1元素 List pb_row_sub_element = pb_row_element.getChildren(); // 获得Pb_Row1元素下所有的子元素 querylist_vector = new Vector(37); // 实例化一个容量为37的Vector对象 // 用迭代器对Pb_Row1元素下所有的子元素进行迭代,并通过循环将读出来的值入到Vector中
Iterator iterator = pb_row_sub_element.iterator(); while (iterator.hasNext()) {
Element myvalue = (Element) iterator.next();
querylist_vector.add(new String(myvalue.getText().toString()));
} Element resptime_element = (Element) child.get(4); // 获得根元素下的第5个元素(元素是从0开始)。也就是RespTime元素(执行时间) resptime = resptime_element.getText(); Element respdate_element = (Element) child.get(5); // 获得根元素下的第6个元素(元素是从0开始)。也就是RespDate元素(执行日期) respdate = respdate_element.getText(); Element colnamelist_element = (Element) child.get(6); // 获得根元素下的第7个元素(元素是从0开始)。也就是ColNameLst元素 List colnamelist_sub_element = colnamelist_element.getChildren(); // 获得ColNameLst元素下所有的子元素 colnamelist_vector = new Vector(37); // 实例化一个容量为32的Vector对象 // 用迭代器对ColNameLst元素下所有的子元素进行迭代,并通过循环将读出来的值入到Vector中
Iterator iterator_colnamelist = colnamelist_sub_element.iterator(); while (iterator_colnamelist.hasNext()) {
Element myvalue_colnamelist = (Element) iterator_colnamelist
.next();
colnamelist_vector.add(new String(myvalue_colnamelist.getText()
.toString()));
} url_qf = new URL(condition_qf); // 用webservice地址构造一个URL对象 urlconn_qf = url_qf.openConnection(); // 打开这个http连接 dis_qf = new DataInputStream(urlconn_qf.getInputStream()); // 用DataInputStream把从webservice获得的数据流进行格式化 Document doc_qf = builder.build(dis_qf); // 构造一个查询总欠费的Document对象 Element root_qf = doc_qf.getRootElement(); // 获得查询总欠费的根元素 List child_qf = root_qf.getChildren(); // 获得查询总欠费的根元素下的所有字元素 Element querylist_qf = (Element) child_qf.get(2); // 获得查询总欠费根元素下第3个元素,也就是QryLst元素 List querylist_qf_sub = querylist_qf.getChildren(); // 获得QryLst元素下所有字元素。 Element pb_row = (Element) querylist_qf_sub.get(0); // 获得QrtLst元素下第一个元素,也就是Pb_Row元素 List pb_row_sub = pb_row.getChildren(); // 获得Pb_Row元素下所有的子元素 Element qf_element = (Element) pb_row_sub.get(1); if ((String) querylist_vector.elementAt(17).toString() != ""
|| querylist_vector.elementAt(17) != null) {
String query_sub = "http://10.180.4.108:7001/docroot/Servlet_ETLData_Impl?JKID=8&ETLID=7&Conditions=-1,"
+ (String) querylist_vector.elementAt(17).toString()
+ ",-1"; Document doc_query_sub = builder.build(query_sub); // 构造一个查询操作员相关信息的Document对象 Element root_query_sub = doc_query_sub.getRootElement(); // 获得查询操作员相关信息的根元素 List child_query_sub = root_query_sub.getChildren(); // 获得此根元素下的所有元素 Element resqcode_element_sub = (Element) child_query_sub.get(3); // 获得根元素下的第4个元素(元素是从0开始)。也就是ResqCode元素 // 判断成功与否,1表示成功
if (Integer.parseInt(resqcode_element_sub.getText()) != 1) {
querylist_sub_vector = null;
} else {
Element QryLst_element = (Element) child_query_sub.get(2); // 获得根元素下的第3个元素(元素是从0开始)。也就是QryLst元素 List QryLst_total = QryLst_element.getChildren(); // 获得QryLst元素下所有的子元素 Element pbrow_element = (Element) QryLst_total.get(0); // 获得Pb_Row元素下的第1个元素(元素是从0开始)。也就是Pb_Row1元素 List pbrow_sub_element = pbrow_element.getChildren(); // 获得Pb_Row元素下所有的子元素 querylist_sub_vector = new Vector(7); // 实例化一个容量为7的Vector对象 // 用迭代器对Pb_Row元素下所有的子元素进行迭代,并通过循环将读出来的值入到Vector中
Iterator iterator_sub = pbrow_sub_element.iterator(); while (iterator_sub.hasNext()) {
Element myvalue = (Element) iterator_sub.next();
querylist_sub_vector.add(new String(myvalue.getText()
.toString()));
}
}

解决方案 »

  1.   

    //解析XML文档
    import java.io.*;
    import org.w3c.dom.*;
    import org.w3c.dom.Node;
    import org.xml.sax.*;
    import javax.xml.parsers.*;public class ValidSample
    {
    static public void main(String[] args)
    {
    try
    {
    //类含义?????--如何解析XSD?????
    DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
    dbfactory.setNamespaceAware(true);
    dbfactory.setValidating(true);
    DocumentBuilder domparser = dbfactory.newDocumentBuilder();
    Document doc = domparser.parse(new File("book_ex.xml"));
    System.out.println("XML文档解析完毕!");
    }
    catch(ParserConfigurationException p)
    {
    System.out.println(p.toString());
    }
    catch(SAXException s)
    {
    System.out.println(s.toString());
    }
    catch(IOException e)
    {
    System.out.println(e.toString());
    }
    }
    }
      

  2.   

    楼主看一下这里
    http://www-128.ibm.com/developerworks/cn/xml/x-dom4j.html?ca=dwcn-newsletter-xml#author1
      

  3.   

    解析器多得很,google一下就有很多例子,比如jdom,dom4j!
      

  4.   

    用dom4j来读比较快
    很简单的
      

  5.   

    http://community.csdn.net/Expert/topic/4718/4718503.xml?temp=.2606165
    以前的一个贴子