Mit Sax Inhalt zwischen Tags in Vector speichern

Status
Nicht offen für weitere Antworten.

dyn

Mitglied
Hi,

folgender Code:

Code:
import java.util.Vector;

import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.Attributes;

public class SimpleContentHandler implements ContentHandler {
    private Locator ourLocator = null;
    StringBuffer xmldata = new StringBuffer();
    String startTag, endTag, topic;
    Vector topics = new Vector();
  
          
    
    public void setDocumentLocator(Locator locator) {
	ourLocator = locator;
	
    };

    public void startDocument() {};    
    public void endDocument() {};
    public void processingInstruction(String target, String data) {};
    public void startPrefixMapping(String prefix, String uri) {};
    public void endPrefixMapping(String prefix) {};

    public void startElement(String namespaceURI, String localName, 
                             String qualifiedName, Attributes atts)
    {	
		startTag = localName;		
    }    
   
    public void characters(char[] text, int start, int length) {
    	
    	if (startTag.contains("title"))
    	{
    	 topic = new String(text, start, length);  
    	 System.out.println(start);
    	 xmldata.append(topic);
    	 
    	}    	
    }

    public void ignorableWhitespace(char[] text, int start, int length) {};
    public void skippedEntity(String name) {};
    public void endElement(String namespaceURI, String localName, 
            String qualifiedName) {};

            public StringBuffer getTopics()
            {
            	return xmldata;
            }            
            
}

Ich kriege es damit schon hin alles was zwischen <title> </title> steht in dem StringBuffer zu speichern. Ich möchte es allerdings in einem Vector speichern.
Wenn ich das jedoch ganz normal mit vector.add(topic) mache, dann speichert er alles an eine Stelle des Vectors.

Ich brauche die einzelnen Inhalte zwischen den title-tags jedoch als einzelne Elemente!!! also nicht nur an einer Stelle! Wie kriege ich das hin? :|
 
Wenn der StringBuffer die richtigen Daten enthält mit xmldata.append(topic);
dann muss der Vector logischerweise auch die richtigen Daten bekommen mit topics.add(topic); --> jeder topic wird zu einem separaten Element im Vector.
 
du hast schon recht, ich hatte mich vertan. allerdings ist das problem, dass ich massig leere stellen im vector habe. das kann ich aber sicher abfangen.
 
ich muss wohl die ignorablewhitespace funktion füllen, weil ich ohne ende "", etc. habe - wie mache ich das sinnvolL=?!
 
dyn hat gesagt.:
ich muss wohl die ignorablewhitespace funktion füllen, weil ich ohne ende "", etc. habe - wie mache ich das sinnvolL=?!
http://www.sws.bfh.ch/~amrhein/Skripten/XML/SAXSkript.pdf hat gesagt.:
Leerzeichen wie Tabs oder Zeilenumbrüche zwischen den Elementen werden normalerweise ignoriert (ausser im mixed content model)
Die Methode ignorableWhitespace kann zum Lesen/Behandeln dieser Zeichen verwendet werden.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben