我们在这里只讨论解决问题的方法,决体的代码还是自己去写,别人也没有那么多时间按照你的要求去实现你的功能。 
  java里面解析xml,我用的是jdom包, 他可以把xml转换为一个树型的对象,然后遍历所有的节点,注意,在遍历所有节点的时候,算法最好采用嵌套法。就是让每个子节点都遍历完所有的儿子节点。  这里有我用的解析xml的一个class, 你可以参考参考 package lbscomm;import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
import org.xml.sax.*;/**
 * <p>Title: </p>
 * <p>Description:</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company:  ytinfo</p>
 * @author Napoleonz
 * @version 1.0
 */public class XmlChange {
  Element findel = null;
  public XmlChange(String str) {
    // byte[] buff = new byte[1024]; //定义数组
    //InputStream instr=null;//读取数据的对象
    //boolean cont = true;
    //对于指定的端口,生成socket
    //生成instr对象,准备读取的对象
    //OutputStream  outstr;
    //InputStream instr;
    try
    {
      readXML test = new readXML(new InputSource(new StringReader(str)));
      test.readXMLFile();
    }
    catch (JDOMException e) {
      e.printStackTrace();
    }
    catch (IOException e) {
      e.printStackTrace();
      System.exit(1);
    }
  } //XmlChange
  class readXML {
    public InputSource yourStr;
    public readXML(InputSource files) {
      yourStr = files;
    }    public void readXMLFile() throws JDOMException, IOException    {
      //DOMBuilder builder=new DOMBuilder();
      SAXBuilder sbuilder = new SAXBuilder();
      Document doc = new Document();
      //doc=sbuilder.build(new File(xmlFile));
      //doc=sbuilder.build(new InputStream(new StringReader(yourStr));
      doc = sbuilder.build(yourStr);
      LbsMpa.xlong = getXmlData(doc, "X");
      LbsMpa.ylat = getXmlData(doc, "Y");
    } //readXMLFile    public String getXmlData(Document mdoc, String sname) {
      List datalist = null;
      String eltext = null;
      Element el = null;
      ArrayList alist = new ArrayList();
      Element eroot = mdoc.getRootElement(); //得到根元素
      List rlist = eroot.getChildren();
      searchElement(rlist, sname);      //datalist = findel.getChildren();
      //Iterator i = datalist.iterator();
      //while (i.hasNext()) {
        //el = (Element) i.next();
        eltext = findel.getText();
     // }
      return eltext;
    }    /************************************
     *功能:查找你想要的元素
     * @param lparam 是个list类型的链表,表示某结点的孩子数
     * @param sname 是你想找的元素名称
     */    public void searchElement(List lparam, String sname) {
      Element el = null;
      Iterator i = lparam.iterator();
      while (i.hasNext()) {
        el = (Element) i.next();
        String elname = el.getName();
        //elname = elname.trim();
        if (sname.equals(elname)) {
          findel = el;
          break;
        }
        else {
          if (el.getChildren().size()>0) {
            List childlist = el.getChildren();
            searchElement(childlist, sname);
          }
        }
      } //while
    } //searchElement
  }//readXML
}
 这里用的jdom包网上可以找到,登陆sun公司的网站就有
 祝你好运

解决方案 »

  1.   

    public LinkedList getList(){
        NodeList lstNode = root.getElementsByTagName("lists");
        Node node = lstNode.item(0);
        String message = node.getNodeName();    if (node.hasChildNodes()){
          for (int loop=0;loop < node.getChildNodes().getLength();loop++){
            if (!((Node)node.getChildNodes().item(loop)).getNodeName().trim().equals("#text")){
              Node subNode = node.getChildNodes().item(loop);          System.out.println(subNode.getNodeName());
            }
            else{
              System.out.println("null");
            }      }    }
        return null;
      }