⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlparser.java

📁 MilGra0.8b for java media server
💻 JAVA
字号:
/*	Milenia Grafter Server		Copyright (c) 2007-2008 by Milan Toth. All rights reserved.		This program is free software; you can redistribute it and/or	modify it under the terms of the GNU General Public License	as published by the Free Software Foundation; either version 2	of the License, or (at your option) any later version.		This program is distributed in the hope that it will be useful,	but WITHOUT ANY WARRANTY; without even the implied warranty of	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the	GNU General Public License for more details.		You should have received a copy of the GNU General Public License	along with this program; if not, write to the Free Software	Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.*/package application;/**		XmlParser class		@mail milgra@milgra.com	@author Milan Toth	@version 20080316		Tasks of XmlParser 			- parse a simplified xml**/import java.io.File;import java.io.FileReader;import java.io.IOException;import java.io.BufferedReader;import java.io.FileNotFoundException;import java.util.ArrayList;public class XmlParser {	public ArrayList < String > nodes;	public ArrayList < String > texts;		/**	 * Creates a new ConfigReader instance, and loads the given file	 * @param fileNameX the xml's name	 */		public XmlParser ( String fileNameX )	{				// System.out.println( System.currentTimeMillis() + " ConfigReader.construct " + fileNameX );				try		{			File file = new File( fileNameX );			FileReader fileReader = new FileReader( file );			BufferedReader reader = new BufferedReader( fileReader );						parseFile( reader );					}		catch ( FileNotFoundException exception ) { exception.printStackTrace( ); }			}		/**	 * Parses the file	 * @param readerX BufferedReader	 */		public void parseFile ( BufferedReader readerX )	{				// System.out.println( System.currentTimeMillis() + " ConfigReader.parseFile " + readerX );				texts = new ArrayList < String > ( );		nodes = new ArrayList < String > ( );				int code;		String value = "";				try		{						do			{							code = readerX.read( );								switch ( code )				{									// <					// >									case 60 : texts.add( value ); value = ""; break;					case 62 : nodes.add( value ); value = ""; break;					default : value += ( char ) code; break;								}							}			while ( code != -1 );					}		catch ( IOException exception ) { exception.printStackTrace( ); }				texts.remove( 0 );		texts.add( null );			}		/**	 * Returns the wanted node value	 * @param pathX path in xml	 * @param indexX index of the wanted node	 * @return String	 */		public String getValue ( String pathX , int indexX )	{				// System.out.println( System.currentTimeMillis() + " ConfigReader.getValue " + pathX + " " + indexX );		int count = 0;		int depth = 0;		int index = 0;				String [ ] parts = pathX.split( "\\." );				// going through nodes				while ( count < nodes.size( ) )		{						String node = nodes.get( count );						if ( node.equals( parts[depth ] ) ) 			{								if ( depth == ( parts.length - 1 ) )				{									if ( index == indexX ) return texts.get( count );					else ++index;									} 				else ++depth;							}						++count;					}		return null;			}		/**	 * Returns node count	 * @param pathX path in xml	 * @return count	 */		public int getCount ( String pathX )	{				// System.out.println( System.currentTimeMillis() + " ConfigReader.getCount " + pathX );		int count = 0;		int depth = 0;		String [ ] parts = pathX.split( "\\." );				// going through nodes				while ( count < nodes.size( ) )		{						String node = nodes.get( count );						if ( node.equals( parts[depth ] ) ) 			{								if ( depth == ( parts.length - 1 ) )				{										return calculateCount( count );									} 				else ++depth;							}						++count;					}		return 0;	}		/**	 * Calculates child count	 * @param indexX starting index	 * @return child count	 */		public int calculateCount ( int indexX )	{				// System.out.println( System.currentTimeMillis() + " ConfigReader.calculateCount " + indexX );				int depth = 0;		int count = indexX;		int child = 0;				do		{						String actNode = nodes.get( count );						if ( actNode.charAt( 0 ) == "/".charAt( 0 ) )			{								--depth;							}			else 			if ( actNode.charAt( actNode.length() - 1 ) != "/".charAt( 0 ) )			{								++depth;				++child;							}						++count;					}		while ( count < nodes.size( ) && depth > -1 );				return child;				}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -