Læs XML til Servlet
Jeg er lige begyndt at lege med Servlets og er desværre stødt ind i et problem når det gælder om at læse en XML fil til en servlet.Det virker som det skal hvis det kører over main console, men ikke over browseren..
----------------------------------------------------------
public class WelcomeServlet extends HttpServlet
{
private MyXMLParser mxp;
private String scrollingMessage;
private int repeats;
public void init( ServletConfig config ) throws ServletException
{
// Load in XML file with a parser
try
{
mxp = new MyXMLParser();
mxp.parseIt( "ScrollingText.xml" );
HashMap<String, String> elements = mxp.getElements();
scrollingMessage = elements.get( "message" );
repeats = Integer.parseInt(elements.get( "repeats" ));
}
catch( Exception ex )
{
System.out.println( "Exception in : " + ex );
ex.printStackTrace();
}
}
public void destroy()
{
// Clean save hits
}
public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException
{
// Load in XML file with a parser
response.setContentType( "text/html" );
PrintWriter out = response.getWriter();
String title = "Welcome to The Advanced Computer Science Study in Sønderborg";
out.println( "<HEAD><TITLE>"+title+"</TITLE></HEAD>" );
out.println( "<BODY BGCOLOR='#FDF5E6'>\n" +
"<H1 ALIGN='CENTER'>"+title+"</H1>" +
"<MARQUEE LOOP="+repeats+" BEHAVIOR='BOUNCE'>"+scrollingMessage+repeats+"</MARQUEE>" );
out.println( "</BODY></HTML>" );
}
----------------------------------------------------------
public class MyXMLParser
{
private SAXParserFactory factory;
private SAXParser parser;
private MyHandler myHandler;
private HashMap<String, String> items;
public MyXMLParser()
{
try
{
items = new HashMap<String, String>();
factory = SAXParserFactory.newInstance();
factory.setValidating( false );
parser = factory.newSAXParser();
myHandler = new MyHandler();
}
catch(Exception ex)
{
System.out.println("Error in Constructing parser: " + ex);
}
}
public void parseIt( String file ) throws Exception
{
XMLReader xr = parser.getXMLReader();
xr.setContentHandler( myHandler );
xr.parse( file );
//parser.parse( file, myHandler );
}
public HashMap<String, String> getElements()
{
return items;
}
public int size()
{
return items.size();
}
class MyHandler extends DefaultHandler
{
private String currentElement;
public void startElement( String uri, String localName, String qName, Attributes attrs )
{
System.out.print("<" + qName );
currentElement = qName;
int count = attrs.getLength();
for (int i = 0; i < count; i++)
{
System.out.print(" " + attrs.getQName(i) + "=\"" + attrs.getValue(i) + "\"");
}
System.out.print(">");
}
public void endElement(String name)
{
System.out.print("</" + name + ">");
}
public void characters( char[] data, int start, int length )
{
String text = new String( data, start, length );
System.out.print( text );
items.put( currentElement , "2" );
}
public void ignorableWhitespace( char[] data, int start,int length )
{
characters( data, start, length );
}
public void warning(SAXParseException spe)
{
System.out.println( "Warning " + spe );
}
public void error(SAXParseException spe)
{
System.out.println( "error in XML ->" + spe );
}
public void endDocument()
{
System.out.print("\nThe end!");
}
}
----------------------------------------------------------
<?xml version='1.0' standalone='yes'?>
<scrolling_message>
<message>Come to the fridays bar happy hour from 12-14</message>
<repeats>2</repeats>
</scrolling_message>
----------------------------------------------------------
Her er hvad jeg har, kan bare ikke få den til at hente data fra xml filen...
