XML Parser Frage

Hallo ich habe eine XML Datei mit folgendem Aufbau
Code:
<studentlist>
   	<student firstname="Jan" lastname="Jansen">
   		<result coursename="ALDA" grade="1"/>
   	</student>
   	<student firstname="Arie" lastname="Arieson">
   		<result coursename="ALDA" grade="2"/>
   	</student>
</studentlist>

Diese möchte ich in eine Linkedliste parsen. habe schon mit etwas rummexperimentiert, aber klappt nicth so wirklich:

Code:
    public void startElement(String uri, String localName, String name,
        Attributes attributes) throws SAXException {
        if (attributes.getValue("firstname") != null) {
            students.add(new Student(attributes.getValue("firstname"),
                    attributes.getValue("lastname"),
                    attributes.getValue("coursename"),
                    Float.parseFloat(attributes.getValue("grade"))));
        }
    }

kann mir wer helfen? oder ein tutorial dafür zusenden? danke
 
Hallo,

Was genau klappt denn nicht?
So kann ich im Code keinen Fehler erkennen.


MFG
zEriX
 
ich weiß nicht wie ich die result rausbekomme, das ist mein problem, da diese verschachtelt im student ist
 
Zuletzt bearbeitet:
Java:
/**
   * Search Element in XML Document
   * @param e Startelement for search (null for root)
   * @param sName Elementname after which you are looking for
   * @return Element
   */
  protected Element searchElement(Element e, String sName) {
    Element temp = null;
    if (e == null)
      e = doc.getRootElement();

    List l = e.getChildren();
    if (l != null) {
      ListIterator children = l.listIterator();
      while (children.hasNext()) {
        e = (Element) children.next();
        if (e.getName().equals(sName))
          return e;
        else {
          temp = searchElement(e, sName);
          if (temp != null)
            return temp;
        }
      }
      return null;
    }
    else
      return null;
  }

das ist ne Methode die nach dem ERSTEN Element sucht welches den Namen "sName" hat.

Die Methode ist eigentlich auch nur für XML File die keine doppelten Elemente haben gedacht, aber vielleicht hilft es dir weiter.......
 
Zuletzt bearbeitet:
Elemente hast du keine beim SAX-Parser

Schau mal hier
Java:
import java.io.File;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;


public class SaxParserExample
{

  /**
   * @param args
   * @throws SAXException 
   * @throws ParserConfigurationException 
   */
  public static void main(String[] args) throws Exception
  {
    SAXParserFactory factory = SAXParserFactory.newInstance();
    SAXParser parser = factory.newSAXParser();
    
    parser.parse(new File("NewFile.xml"),new MyHandler() );
  }
  
  

}
class MyHandler extends DefaultHandler{

  @Override
  public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException
  {
    if(name.equals("student")){
     System.out.println("Das sind die Attribute des Studenten");
    }
    else if(name.equals("result")){
      System.out.println("Das sind die Attribute des results");
    }
    for(int i=0; i< attributes.getLength();i++){
      String nameA = attributes.getQName(i);
      System.out.println(nameA+": "+attributes.getIndex(nameA));
    }
  }
  
}


MFG

zEriX
 
Zurück