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. DOM-Programmierbeispiel:
XML einlesen, Element hinzufügen und neue XML-Dateierzeugen

Dieses Programmierbeispiel erfüllt die gleichenAnforderungen mit JAXP-DOM, wie das weiter unten folgendeProgrammierbeispiel 'ExampleJdomAddWrite.java'mit JDOM erfüllt, um den unterschiedlichenProgrammieraufwand einschätzen zu können.

In einer XML-Datei wird ein bestimmtes Element gesucht,dessen Childelement einen bestimmten Text enthält. Vor dieses Element wird ein neues Element plaziert und das Ergebnis in eine neue XML-Datei gespeichert.

Im gleichen Verzeichnis, wo sich die oben gezeigte Beispiel-XML-Datei 'MyXmlFile.xml' befindet, speichern Sie den folgenden Java-Sourcecode unter dem Namen 'ExampleDomAddWrite.java' und kompilieren und führen ihn aus mit:

javac ExampleDomAddWrite.java
java ExampleDomAddWrite MyXmlFile.xml NewXmlFile.xml Button Title "Mein dritter Button" "Mein neuer Button"

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 Diese XML-Datei wird zu Beginn gelesen
<NewFile> NewXmlFile.xml In diese XML-Datei wird das Ergebnis geschrieben (falls die Suchbedingungen erfüllt werden)
<MainElem> Button Es werden Elemente mit diesem Tag-Namen gesucht
<Child> 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
<New> "Mein neuer Button" Nur wenn die vorhergehenden Suchbedingungen erfüllt sind, wird ein neues Element mit diesem Child-Element-Inhalt vor das gefundene Element eingefügt

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. Vor dieses <Button>-Element wird ein neues <Button>-Element mit dem angegebenen <Title>-Text <New>="Mein neuer Button" eingefügt. Das Ergebnis wird in die Datei 'NewXmlFile.xml' gespeichert, allerdings in wenig schöner Formatierung. Eine schönere Formatierung ist leicht mit JDOM realisierbar, wie die weiter unten gezeigten 'JDOM-Programmierbeispiele' demonstrieren.

Wenn Sie aus dem vorherigen Beispiel die Hilfsmethode 'printNodesFromList()' zu diesem Beispiel hinzufügen, können Sie an zwei Stellen die Kommentarzeichen '//' vor diesen Methodenaufrufen entfernen. Dann bekommen Sie die Knotenstruktur vor und nach der Änderung direkt im Kommandozeilenfenster angezeigt.

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


                                       // ExampleDomAddWrite.java
                                       
                                       import java.io.*;
                                       import org.xml.sax.*;
                                       import org.w3c.dom.*;
                                       import javax.xml.parsers.*;
                                       import javax.xml.transform.*;
                                       import javax.xml.transform.dom.DOMSource;
                                       import javax.xml.transform.stream.StreamResult;
                                       
                                       
                                       public class ExampleDomAddWrite
                                       {
                                         public static void main( String[] argv )
                                         {
                                           if( argv.length != 6 )
                                           {
                                             System.err.println( "Usage:" );
                                             System.err.println( "java ExampleDomAddWrite <XmlFile> <NewFile>"
                                                                   + " <MainElem> <Child> <FindVal> <New>" );
                                             System.err.println( "Example:" );
                                             System.err.println( "java ExampleDomAddWrite MyXmlFile.xml NewXmlFile.xml"
                                                                   + " Button Title \"Mein dritter Button\""
                                                                   +                " \"Mein neuer Button\"" );
                                             System.exit( 1 );
                                           }
                                       
                                           try {
                                             // ---- Parse XML file ----
                                             DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                                             // factory.setNamespaceAware( true );
                                             // factory.setValidating( true );
                                             DocumentBuilder builder  = factory.newDocumentBuilder();
                                             Document        document = builder.parse( new File( argv[0] ) );
                                             Node            rootNode = document.getDocumentElement();
                                       
                                             // ---- Get list of nodes to given tag ----
                                             NodeList ndList = document.getElementsByTagName( argv[2] );
                                             // System.out.println( "\nNode list at the beginning:" );
                                             // printNodesFromList( ndList );
                                       
                                             // ---- Loop through the list of main nodes ----
                                             for( int i=0; i<ndList.getLength(); i++ )
                                             {
                                               Node     nodeMain     = ndList.item( i );
                                               Node     nodeChild    = null;
                                               NodeList ndListChilds = nodeMain.getChildNodes();
                                               boolean  bChildFound  = false;
                                               if( null == ndListChilds )  continue;
                                               // Loop through the list of child nodes
                                               for( int j=0; j<ndListChilds.getLength(); j++ )
                                               {
                                                 nodeChild = ndListChilds.item( j );
                                                 if( null == nodeChild )  continue;
                                                 String sNodeName = nodeChild.getNodeName();
                                                 if( null == sNodeName )  continue;
                                                 if( sNodeName.equals( argv[3] ) )
                                                 {
                                                   bChildFound = true;
                                                   break;
                                                 }
                                               }
                                               if( !bChildFound )  continue;
                                               Node nodeData = nodeChild.getFirstChild();
                                               if( null == nodeData ||
                                                   !(nodeData instanceof org.w3c.dom.Text) )  continue;
                                               String sData = nodeData.getNodeValue();
                                               if( null == sData ||
                                                   !sData.equals( argv[4] ) )  continue;
                                       
                                               // ---- Create a new node element and insert it ----
                                               Node newMainNode  = document.createElement(  argv[2] );
                                               Node newChildNode = document.createElement(  argv[3] );
                                               Text newTextNode  = document.createTextNode( argv[5] );
                                               newChildNode.appendChild( newTextNode );
                                               newMainNode.appendChild( newChildNode );
                                               rootNode.insertBefore( newMainNode, nodeMain );
                                               rootNode.normalize();
                                               // System.out.println( "Node list after modification:" );
                                               // printNodesFromList( ndList );
                                               break;
                                             }
                                       
                                             // ---- Use a XSLT transformer for writing the new XML file ----
                                             Transformer transformer = TransformerFactory.newInstance().newTransformer();
                                             DOMSource        source = new DOMSource( document );
                                             FileOutputStream os     = new FileOutputStream( new File( argv[1] ) );
                                             StreamResult     result = new StreamResult( os );
                                             transformer.transform( source, result );
                                       
                                             // ---- Error handling ----
                                           } catch( TransformerConfigurationException tce ) {
                                               System.out.println( "\n** Transformer Factory error" );
                                               System.out.println( "   " + tce.getMessage() );
                                               Throwable e = ( tce.getException() != null ) ? tce.getException() : tce;
                                               e.printStackTrace();
                                           } catch( TransformerException tfe ) {
                                               System.out.println( "\n** Transformation error" );
                                               System.out.println( "   " + tfe.getMessage() );
                                               Throwable e = ( tfe.getException() != null ) ? tfe.getException() : tfe;
                                               e.printStackTrace();
                                           } catch( SAXParseException spe ) {
                                               System.out.println( "\n** Parsing error, line " + spe.getLineNumber()
                                                                                   + ", uri "  + spe.getSystemId() );
                                               System.out.println( "   " + spe.getMessage() );
                                               Exception e = ( spe.getException() != null ) ? spe.getException() : spe;
                                               e.printStackTrace();
                                           } catch( SAXException sxe ) {
                                               Exception e = ( sxe.getException() != null ) ? sxe.getException() : sxe;
                                               e.printStackTrace();
                                           } catch( ParserConfigurationException pce ) {
                                               pce.printStackTrace();
                                           } catch( IOException ioe ) {
                                               ioe.printStackTrace();
                                           }
                                         }
                                       }
                                       

 

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