/// <summary> /// Parse and load an array element type /// </summary> /// <param name="reader"></param> /// <returns></returns> protected static ArrayNode LoadArray(XmlTextReader reader) { string aname = reader.LocalName; string vname = reader.GetAttribute("varName"); string blocksize = reader.GetAttribute("blockSize"); ArrayNode a = new ArrayNode(aname); if (vname != null) { a.setVarName( vname ); } if (blocksize != null) { a.setBlockSize( Convert.ToInt32(blocksize) ); } bool inSizeRefSection = false; while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (reader.LocalName.Equals("sizeRef")) { inSizeRefSection = true; } else if (reader.LocalName.Equals("dim")) { string dname = reader.GetAttribute("name"); int nCount = 0; string indexTo = reader.GetAttribute("indexTo"); if (indexTo == null) { string count = reader.GetAttribute("count"); if (count != null) { nCount = Convert.ToInt32(count); } } else { nCount = Convert.ToInt32(indexTo) + 1; } a.addDimension(dname, nCount); } else if (inSizeRefSection) { a.setSizeRef( ParseNode(reader) ); } else { a.setElement( ParseNode(reader) ); } } else if (reader.NodeType == XmlNodeType.EndElement) { if (reader.LocalName.Equals("sizeRef")) { inSizeRefSection = false; } else if (reader.LocalName.StartsWith("array")) { break; } } } return a; }
/// <summary> /// Parse and load an array element type /// </summary> /// <param name="reader"></param> /// <returns></returns> protected static ArrayNode LoadArray(XmlTextReader reader) { string aname = reader.LocalName; string vname = reader.GetAttribute("varName"); string blocksize = reader.GetAttribute("blockSize"); ArrayNode a = new ArrayNode(aname); if (vname != null) { a.setVarName(vname); } if (blocksize != null) { a.setBlockSize(Convert.ToInt32(blocksize)); } bool inSizeRefSection = false; while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (reader.LocalName.Equals("sizeRef")) { inSizeRefSection = true; } else if (reader.LocalName.Equals("dim")) { string dname = reader.GetAttribute("name"); int nCount = 0; string indexTo = reader.GetAttribute("indexTo"); if (indexTo == null) { string count = reader.GetAttribute("count"); if (count != null) { nCount = Convert.ToInt32(count); } } else { nCount = Convert.ToInt32(indexTo) + 1; } a.addDimension(dname, nCount); } else if (inSizeRefSection) { a.setSizeRef(ParseNode(reader)); } else { a.setElement(ParseNode(reader)); } } else if (reader.NodeType == XmlNodeType.EndElement) { if (reader.LocalName.Equals("sizeRef")) { inSizeRefSection = false; } else if (reader.LocalName.StartsWith("array")) { break; } } } return(a); }