# Mit Sax Inhalt zwischen Tags in Vector speichern



## dyn (21. Feb 2007)

Hi,

folgender 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? :|


----------



## André Uhres (22. Feb 2007)

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.


----------



## dyn (22. Feb 2007)

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.


----------



## dyn (22. Feb 2007)

ich muss wohl die ignorablewhitespace funktion füllen, weil ich ohne ende "", etc. habe - wie mache ich das sinnvolL=?!


----------



## André Uhres (22. Feb 2007)

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.


----------

