本帖最后由 xuanjie25 于 2012-09-16 11:19:18 编辑

解决方案 »

  1.   

    层级比较深,你需要一开始就把element向其子节点深入一级。另外,你没有用循环对 innerItr 进行迭代处理,比如:
    while (innerItr.hasNext()) {
      System.out.println(((OMElement)innerItr.next()).getLocalName());
    }
      

  2.   


    我有对innerItr进行迭代啊,result = (OMElement) iterator.next();
                innerItr = result.getChildElements();
    对iterator进行迭代,每次innerItr取其子元素,这不是相当于对innerItr进行迭代了吗??而且按照你说的加了个while改了下程序还是取不出值来,输出的都是空格
      

  3.   

    对iterator进行迭代,每次innerItr取其子元素,这不是相当于对innerItr进行迭代了吗?
    —— 不是的,XML结构的关系就类似于 List<List<List<List<...  对父节点进行迭代,不对子节点产生任何影响。
    初学XML,最怕不知道进入了XML的什么位置,所以还是检查下你究竟在迭代什么元素吧:
    public static List<String> getResults(OMElement element) {
            if (element == null) {
                return null;
            }
    System.out.println("IN: " + element); // 新增
            Iterator iterator = element.getChildElements();
            Iterator innerItr;
            List<String> list = new ArrayList<String>();
            OMElement result = null;
            while (iterator.hasNext()) {
                result = (OMElement) iterator.next();
    System.out.println("While: " + result); // 新增
                innerItr = result.getChildElements();
    while (innerItr.hasNext()) {  // 新增
      OMElement elem = (OMElement)innerItr.next();  // 新增
      System.out.println("\tWhile: "+elem);  // 新增
      System.out.println("\t\t" + elem.getLocalName() + ": " + elem.getText());  // 新增
    } // 新增
            }
            return list;
    }