You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Juza1 <fc...@id.ethz.ch> on 2009/03/12 16:27:44 UTC
digester newby question/problem
Hi to all,
I'm new to digester and I have the following problem:
I have such an XML File to parse:
<?xml version='1.0' encoding='UTF-8'?>
<OAI-PMH xmlns='http://www.openarchives.org/OAI/2.0/'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='http://www.openarchives.org/OAI/2.0/
http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd'>
<responseDate>2009-03-12T14:00:14Z</responseDate>
<request verb="ListRecords" metadataPrefix="oai_dc"
set="2009">http://url.url.org/abc.asp</request>
<ListRecords>
<record>
<header>
<identifier>oai:oai.ethz.ch:e-collection/005583701</identifier>
<datestamp>2008-12-08</datestamp>
<setSpec>2009</setSpec>
</header>
<metadata>
<oai_dc:dc
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
http://www.openarchives.org/OAI/2.0/oai_dc.xsd"
xmlns="http://purl.org/dc/elements/1.1/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/">
<title>Universita?res Wissen teilen Forschende im Dialog
</title>
<creator>Ru?egger, Hans-Ulrich </creator>
<type>text</type>
<publisher>Zu?richvdf Hochschulverlag an der ETH
Zu?rich</publisher>
<date>2009</date>
<language>ger</language>
<subject>Wissenschaft</subject>
<subject>Forschung</subject>
<subject>Kooperation</subject>
<subject>Wissenstransfer</subject>
<identifier>http://url.url.url.org/blabla</identifier>
<identifier>http://url.url.url.org/blabla.pdf</identifier>
<identifier></identifier>
</oai_dc:dc>
</metadata>
</record>
...other records
</ListRecords>
</OAI-PMH>
Then I wrote my parser:
...
public ListRecordsParser(InputStream response) throws IOException,
SAXException
{
// instantiate Digester and disable XML validation
Digester digester = new Digester();
digester.setValidating(false);
// instantiate ListRecords class
digester.addObjectCreate("OAI-PMH/ListRecords", ListRecords.class );
// instantiate Record class
digester.addObjectCreate("OAI-PMH/ListRecords/record", Record.class
);
// instantiate Header class
digester.addObjectCreate("OAI-PMH/ListRecords/record/header",
Header.class );
digester.addBeanPropertySetter(
"OAI-PMH/ListRecords/record/header/identifier", "identifier" );
digester.addBeanPropertySetter(
"OAI-PMH/ListRecords/record/header/datestamp", "datestamp" );
digester.addBeanPropertySetter(
"OAI-PMH/ListRecords/record/header/setSpec", "setSpec" );
digester.addSetNext( "OAI-PMH/ListRecords/record", "setHeader" );
// instantiate MetaData class
digester.addObjectCreate("OAI-PMH/ListRecords/record/metadata",
MetaData.class );
digester.addBeanPropertySetter(
"OAI-PMH/ListRecords/record/metadata/title", "title" );
digester.addBeanPropertySetter(
"OAI-PMH/ListRecords/record/metadata/creator", "creator" );
digester.addBeanPropertySetter(
"OAI-PMH/ListRecords/record/metadata/publisher", "publisher" );
digester.addSetNext( "OAI-PMH/ListRecords/record", "setMetaData" );
digester.addSetNext( "OAI-PMH/ListRecords/record", "addRecord" );
// now that rules and actions are configured, start the parsing
process
ListRecords lr = (ListRecords)digester.parse(response);
...
The problem is that when I run it I get:
2009-03-12 16:01:41,431 [main] ERROR
org.apache.commons.digester.Digester(org.apache.commons.digester.Digester.fatalError(Digester.java:1765))
- Parse Fatal Error at line -1 column -1: Premature end of file.
org.xml.sax.SAXParseException: Premature end of file.
at
org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown
Source)
at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1887)
at ethz.oai.helper.ListRecordsParser.<init>(ListRecordsParser.java:59)
at ethz.oai.MetaDataCollector.getDocumentsData(MetaDataCollector.java:129)
at
ethz.test.MetaDataCollectorTest.testGetMetaData(MetaDataCollectorTest.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at
org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at
org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at
org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at
org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at
org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
at
org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at
org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at
org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
What's the problem? Shoul I define the entire XML structure in my parser?
Thanx a lot for the help
Juza
--
View this message in context: http://www.nabble.com/digester-newby-question-problem-tp22478258p22478258.html
Sent from the Commons - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org