protected Array(Element arrayE) throws Exception {
    String arrayS = arrayE.getTagName();
    
    // get the type of the array
    if (arrayS.equals("Array")) {
      String type = arrayE.getAttribute("type"); 
      if (type.equals("int")) {
        m_type = ArrayType.INT;
      } else if (type.equals("real")) {
        m_type = ArrayType.REAL;
      } else if (type.equals("string")) {
        m_type = ArrayType.STRING;
      }
    } else {
      for (ArrayType a : ArrayType.values()) {
        if (a.toString().equals(arrayS)) {
          m_type = a;
          break;
        }
      }
    }
    // now read the values
    String contents = arrayE.getChildNodes().item(0).getNodeValue();
    StringReader sr = new StringReader(contents);
    StreamTokenizer st = new StreamTokenizer(sr);
    st.resetSyntax();
    st.whitespaceChars(0, ' ');
    st.wordChars(' '+1,'\u00FF');
    st.whitespaceChars(' ',' ');
    st.quoteChar('"');
    st.quoteChar('\'');
    //m_Tokenizer.eolIsSignificant(true);
    
    st.nextToken();
    while (st.ttype != StreamTokenizer.TT_EOF && 
        st.ttype != StreamTokenizer.TT_EOL) {
      m_values.add(st.sval);
      st.nextToken();
    }
  }