SUCHE MIT Google
Web virtualuniversity.ch
HOME DIDAKTIK ECDL ELEKTRONIK GUIDES HR MANAGEMENT MATHEMATIK SOFTWARE TELEKOM
DIENSTE
Anmeldung
Newsletter abonnieren
Sag's einem Freund!
VirtualUniversity als Startseite
Zu den Favoriten hinzufügen
Feedback Formular
e-Learning für Lehrer
Spenden
Autoren login
KURSE SUCHEN
Kurse veröffentlichen

Suche nach Datum:

Suche mit Schlüsselwort:

Suche nach Land:

Suche nach Kategorie:
PARTNER
ausbildung24.ch - Ausbildungsportal, Seminare, Kursen... 

 
HTMLopen.de - Alles was ein Webmaster braucht

 
PCopen.de - PC LAN Netze und Netzwerke - alles was ein IT Profi und Systemtechnicker braucht

SOFTWARE

3. Einfache Programmierbeispiele mit JAXP

2. SAX-Programmierbeispiel:
XML einlesen und bestimmtes einzelnes Datenelement auslesen

Im gleichen Verzeichnis, wo sich die oben gezeigteBeispiel-XML-Datei 'MyXmlFile.xml'befindet, speichern Sie den folgenden Java-Sourcecode unterdem Namen 'ExampleSaxGetData.java' und kompilierenund führen ihn aus mit:

javac ExampleSaxGetData.java
java ExampleSaxGetData MyXmlFile.xml Button Title "Mein dritter Button" Comment

Falls Ihr Webbrowser die mit "java" beginnende Zeile auf zwei Zeilen umgebrochen hat: Bitte geben Sie diese als eine einzige Kommandozeile ein.

Die Kommandozeilenparameter haben folgende Bedeutung:

Parameter Beispiel Bedeutung
<XmlFile> MyXmlFile.xml In dieser XML-Datei wird gesucht
<MainElem> Button Elemente mit diesem Tag-Namen werden untersucht
<ChildElem> Title Das gesuchte Element muss ein Child-Element mit diesem Tag-Namen haben
<FindVal> "Mein dritter Button" Das Child-Element muss diesen Text als Inhalt haben
<DataElem> Comment Der komplette Inhalt dieses Child-Elements wird ausgelesen, auch inklusive Unterelementen (z.B. HTML-Tags)

Mit der Beispiel-XML-Datei 'MyXmlFile.xml' und den angegebenen Beispielparametern wird das dritte <Button>-Element gefunden, da dessen <Title>-Text mit der Suchvorgabe <FindVal>="Mein dritter Button" übereinstimmt. Der Inhalt des durch <DataElem> vorgegebenen <Comment>-Elements wird ausgelesen und im Kommandozeilenfenster ausgegeben.

Die Variable 'iState' dient als Statusspeicher. Etwas unübersichtlich wird der Status dadurch, dass das gesuchte Element inklusive seiner Unterelemente ausgelesen werden soll (im Beispiel der String 'Dies ist <b>HTML</b>-<i>Text</i>.').

Das Programm funktioniert nur mit einfachen XML-Dateien. Erforderliche Erweiterungen wären Unterstützung von Namespaces und XML-Schemas.


                                       // ExampleSaxGetData.java
                                       
                                       import java.io.*;
                                       import javax.xml.parsers.*;
                                       import org.xml.sax.*;
                                       import org.xml.sax.helpers.DefaultHandler;
                                       
                                       public class ExampleSaxGetData
                                       {
                                         public static void main( String[] args )
                                         {
                                           if( args.length != 5 )
                                           {
                                             System.err.println( "Usage:" );
                                             System.err.println( "java ExampleSaxGetData <XmlFile> "
                                                               + "<MainElem> <ChildElem> <FindVal> <DataElem>" );
                                             System.err.println( "Example:" );
                                             System.err.println( "java ExampleSaxGetData MyXmlFile.xml "
                                                               + "Button Title \"Mein dritter Button\" Comment" );
                                             System.exit( 1 );
                                           }
                                           try {
                                             MyDefaultHandlerImpl handler = new MyDefaultHandlerImpl();
                                             handler.args = args;
                                             SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
                                             saxParser.parse( new File( args[0] ), handler );
                                             if( 0 < handler.sbResult.length() )
                                             {
                                               System.out.println( "Result string in child element '<"
                                                                   + args[4] + ">':" );
                                               System.out.println( handler.sbResult );
                                               System.exit( 0 );
                                             }
                                             else
                                             {
                                               System.out.println( "No fitting element found." );
                                               System.exit( 2 );
                                             }
                                           } catch( Throwable t ) {
                                             t.printStackTrace();
                                             System.exit( 3 );
                                           }
                                         }
                                       }
                                       
                                       // ---- SAX DefaultHandler ----
                                       class MyDefaultHandlerImpl extends DefaultHandler
                                       {
                                         public  String[]     args;
                                         public  StringBuffer sbResult = new StringBuffer();
                                         private int          iState   = 0;
                                       
                                         public void startElement( String namespaceURI,
                                                                   String localName,
                                                                   String qName,
                                                                   Attributes attrs )
                                         throws SAXException
                                         {
                                           if( 5 <= iState )  return;
                                           String eName = ( "".equals( localName ) ) ? qName : localName;
                                           if( null != eName )
                                           {
                                             if( eName.equals( args[1] ) )                 // <MainElem>
                                               iState = 1;
                                             if( 1 == iState && eName.equals( args[2] ) )  // <ChildElem>
                                               iState = 2;
                                             if( 4 == iState )
                                               sbResult.append( "<" + eName + ">" );
                                             if( 3 == iState && eName.equals( args[4] ) )  // <DataElem>
                                               iState = 4;
                                           }
                                         }
                                       
                                         public void endElement( String namespaceURI,
                                                                 String localName,
                                                                 String qName )
                                         throws SAXException
                                         {
                                           if( 5 <= iState )  return;
                                           String eName = ( "".equals( localName ) ) ? qName : localName;
                                           if( null != eName )
                                           {
                                             if( eName.equals( args[1] ) )                 // <MainElem>
                                               iState = 0;
                                             if( 2 == iState && eName.equals( args[2] ) )  // <ChildElem>
                                               iState = 1;
                                             if( 4 == iState && eName.equals( args[4] ) )  // <DataElem>
                                               iState = 5;
                                             if( 4 == iState )
                                               sbResult.append( "</" + eName + ">" );
                                           }
                                         }
                                       
                                         public void characters( char[] buf, int offset, int len )
                                         throws SAXException
                                         {
                                           if( 5 <= iState )  return;
                                           String s = new String( buf, offset, len );
                                           if( 2 == iState && s.equals( args[3] ) )        // <FindVal>
                                             iState = 3;
                                           if( 4 == iState )
                                             sbResult.append( s );
                                         }
                                       }

 

DIPLOMARBEITEN UND BÜCHER

Diplomarbeiten zum Runterladen:

Suche im Katalog:
Architektur / Raumplanung
Betriebswirtschaft - Funktional
Erziehungswissenschaften
Geowissenschaften
Geschichtswissenschaften
Informatik
Kulturwissenschaften
Medien- und Kommunikationswissenschaften
Medizin
Psychologie
Physik
Rechtswissenschaft
Soziale Arbeit
Sozialwissenschaften


JOBS
HOME | E-LEARNING | SITEMAP | LOGIN AUTOREN | SUPPORT | FAQ | KONTAKT | IMPRESSUM
Virtual University in: Italiano - Français - English - Español
VirtualUniversity, WEB-SET Interactive GmbH, www.web-set.com, 6301 Zug

Partner:   Seminare7.de - PCopen.de - HTMLopen.de - WEB-SET.com - YesMMS.com - Ausbildung24.ch - Manager24.ch - Job und Karriere