示例#1
0
        public void StartElement( string name, string value, bool isEmptyElement )
        {
            // 新しいNodeオブジェクトの生成と基本情報のセット
            Node node = new Node( OUTPUT_LOCATION );

            node.Type = Node.NodeType.StartElement;
            node.Name = name;
            node.Value = value;

            // 深さレベル
            node.Level = stack.Count;

            // シリアルナンバー(通し番号)
            node.SerialNumber = serialBaseNum;
            serialBaseNum++;

            currentLevel++;
            numArray[currentLevel] += 1;

            for( int i = 0; numArray[i] != 0; i++ )
                node.NodeNumber.Add( numArray[i] );

            // Pathを作る
            pathtack.Push( node.Name );
            foreach( string path in pathtack )
                node.Path.Add( path );

            // 自分自身をスタックにプッシュ(レベルを下げる)
            stack.Push( node );

            // 情報をアウトプット
            node.Output();

            // <Element /> タイプの処理
            if( isEmptyElement )
            {
                numArray[currentLevel + 1] = 0;
                currentLevel--;
                stack.Pop();
                pathtack.Pop();
            }

            #if DEBUG
            if( node.SerialNumber % 10000 == 0 )
                Console.WriteLine( node.SerialNumber );
            #endif
        }
示例#2
0
        public void GetAttribute( string name, string value )
        {
            Node node = new Node( OUTPUT_LOCATION );

            node.Type = Node.NodeType.Attribute;
            node.Name = name;
            node.Value = value;

            node.Level = stack.Count - 1;

            // SerialNumber
            node.SerialNumber = serialBaseNum;
            serialBaseNum++;

            // NodeNumber(動かさない)
            for( int i = 0; numArray[i] != 0; i++ )
                node.NodeNumber.Add( numArray[i] );

            // Path
            foreach( string path in pathtack )
                node.Path.Add( path );

            node.Output();
        }
示例#3
0
        public void GetText( string name, string value )
        {
            Node node = new Node( OUTPUT_LOCATION );

            node.Type = Node.NodeType.Text;
            node.Name = name;
            node.Value = value;

            node.SerialNumber = serialBaseNum;
            serialBaseNum++;

            node.Level = stack.Count;

            currentLevel++;
            numArray[currentLevel] += 1;

            for( int i = 0; numArray[i] !=0; i++ )
                node.NodeNumber.Add( numArray[i] );

            // Path
            foreach( string path in pathtack )
                node.Path.Add( path );

            // 出力
            node.Output();

            // Textは単一ノードで完結していると考える(<Text />)
            numArray[currentLevel + 1] = 0;
            currentLevel--;
        }