Nochmal XML Java

Von: , Frage gestellt am Do, 14. Sep 2000

Wenn man von Java aus die einzelnen Tags und Werte analysieren will gibt es da andere Methoden als das ganze als String auszulesen und sich dann in endlosen character vergleichen zu ergehen?

Und falls es da nichts dergleichen gibt.
Existiert dann eine methode mit der man einen bestimmten String innerhalb eines anderen Strings oder StringBuffers suchen kann?
Am Besten mit anfangs oder Endindex des gesuchten Strings.

Mario

1 Antworten zu dieser Frage

  1. Antwort von nach 11 Minuten 1 hilfreich
    Re: Nochmal XML Java

    Wenn man von Java aus die einzelnen Tags und Werte analysieren
    will gibt es da andere Methoden als das ganze als String
    auszulesen und sich dann in endlosen character vergleichen zu
    ergehen?
    Der Aufbau des JAXP ist zwar nicht wirklich intuitiv, aber du kannst ansich das ganze XML-File schön als Baumstruktur einlesen und durcharbeiten.

    Hab da was aus einem bestehenden Programm rausgeholt, wie du die Subnodes einer Node durchgest und in diesem Fall ein bestimmtes Attribut rausholst.

    for ( int j = 0; j < oNode.getLength(); j++ )
    {
    if ( ( oElement = oNode.item( j ) ) instanceof ElementNode )
    {
    oSubNode = (ElementNode)oElement;
    String sAttr = oSubNode.getAttribute( "Attributbezeichnung" )
    }
    }


    Das einlesen ist ziemlich viel Code (hauptsächlich wegen der vielen verschiedenen Exceptions, ich kopiere dir auch hier einfach was aus einem bestehenden Programm:

    if ( sXML == "" )
    throw new RuntimeException( "Listener(): Please define an XML file." );
    // Objekte für das Parsen des XML-Files
    DocumentBuilderFactory oFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder oBuilder;
    XmlDocument oDoc;
    try 
    {
    // XML-File parsen und Root-Element speichern
    oBuilder = oFactory.newDocumentBuilder();
    // File-Objekt für XML-File erzeugen
    File oFile = new File( sXML );
    // Überprüfen ob File existiert
    if ( ! oFile.exists() )
    {
    System.out.println( "CommBase(): Specified XML file not found." );
    throw new ESACException( ErrorFlag.INITIALIZATION_ERROR, "Specified XML file not found." );
    }
    // XML-File parsen
    oDoc = (XmlDocument)( oBuilder.parse( oFile )) ;
    m_oRoot = (Element)oDoc.getDocumentElement();
    // Name des Logfiles aus dem XML File parsen
    String sLogFile = m_oRoot.getAttribute( "Logfile" );
    ... 
    } 
    // Die Folgenden Exceptions werden vom Parser geworfen und können
    // zum debuggen des XML-Files verwendet werden
    catch ( SAXParseException spe )
    {
    String sError = "\n** Parsing error" 
    + ", line " + spe.getLineNumber ()
    + ", uri " + spe.getSystemId ()
    + "   " + spe.getMessage();
    if (spe.getException() != null)
    sError += "\n" + spe.getException().getMessage();
    throw writeExLog( new ESACException( ErrorFlag.INITIALIZATION_ERROR, "SAXParseException: " + sError ) );
    }
    catch ( SAXException sxe ) 
    {
    Exception  x = sxe;
    if (sxe.getException() != null)
    x = sxe.getException();
    throw new ESACException( ErrorFlag.INITIALIZATION_ERROR, "SAXException: " + x.getMessage() );
    }
    catch ( ParserConfigurationException pce ) 
    { throw writeExLog( new ESACException( ErrorFlag.INITIALIZATION_ERROR, "ParserConfigurationException: " + pce.getMessage() ) ); }
    catch ( IOException ioe )
    { throw writeExLog( new ESACException( ErrorFlag.INITIALIZATION_ERROR, "IOException: " + ioe.getMessage() ) ); }


    Grüße, Robert

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!