示例#1
0
 /// <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;
 }
示例#2
0
        /// <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);
        }