laredotornado
2011-10-20 15:41:15 UTC
Hi,
I'm using Java 6. I'm trying to parse some well-formed (or at least
that's what I thought) XML but am getting a "SAXParseException:
Premature end of file" exception (below). The code I'm using is
xml = xml.trim();
final InputStream inputStream = new
ByteArrayInputStream(xml.getBytes());
final DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
final DocumentBuilder db = dbf.newDocumentBuilder();
final Document doc = db.parse(xmlInputStream);
The block I'm trying to parse is below. Can anyone see how it is mal-
formed? Barring that, do you know a better way of parsing the string?
<div class="">
<label
for="id417474726962757465205b6e616d653d6e616d652c2076616c75653d4c697374696e672052756c652c20706172656e744e6f64653d546578744e6f6465205b746578743d6e756c6c2c20444e6f64653d444e6f6465205b69643d305d5d5d">400</
label><br/>
<input
id="id417474726962757465205b6e616d653d6e616d652c2076616c75653d4c697374696e672052756c652c20706172656e744e6f64653d546578744e6f6465205b746578743d6e756c6c2c20444e6f64653d444e6f6465205b69643d305d5d5d"
name="id417474726962757465205b6e616d653d6e616d652c2076616c75653d4c697374696e672052756c652c20706172656e744e6f64653d546578744e6f6465205b746578743d6e756c6c2c20444e6f64653d444e6f6465205b69643d305d5d5d"
type="text" value="
15 months of jun, jul, aug, sep, oct
" style="width:400px;" />
</div>
Thanks, - Dave
ps - The error ...
org.xml.sax.SAXParseException: Premature end of file.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:124)
at com.myco.clearing.commons.xmlparser.XMLParser.parse(XMLParser.java:
53)
at com.myco.clearing.commons.xmlparser.XMLParser.parse(XMLParser.java:
35)
at com.myco.clearing.commons.xmlparser.XMLParser.parse(XMLParser.java:
80)
at com.myco.clearing.commons.xmlparser.XMLParser.parse(XMLParser.java:
35)
at
com.myco.pplus2.util.XmlToHtmlServiceTest.testInput(XmlToHtmlServiceTest.java:
52)
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.runners.model.FrameworkMethod
$1.runReflectiveCall(FrameworkMethod.java:44)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:
15)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:
41)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:
20)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:
28)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:
76)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:
50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:
50)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:
38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:
390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:
197)
I'm using Java 6. I'm trying to parse some well-formed (or at least
that's what I thought) XML but am getting a "SAXParseException:
Premature end of file" exception (below). The code I'm using is
xml = xml.trim();
final InputStream inputStream = new
ByteArrayInputStream(xml.getBytes());
final DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
final DocumentBuilder db = dbf.newDocumentBuilder();
final Document doc = db.parse(xmlInputStream);
The block I'm trying to parse is below. Can anyone see how it is mal-
formed? Barring that, do you know a better way of parsing the string?
<div class="">
<label
for="id417474726962757465205b6e616d653d6e616d652c2076616c75653d4c697374696e672052756c652c20706172656e744e6f64653d546578744e6f6465205b746578743d6e756c6c2c20444e6f64653d444e6f6465205b69643d305d5d5d">400</
label><br/>
<input
id="id417474726962757465205b6e616d653d6e616d652c2076616c75653d4c697374696e672052756c652c20706172656e744e6f64653d546578744e6f6465205b746578743d6e756c6c2c20444e6f64653d444e6f6465205b69643d305d5d5d"
name="id417474726962757465205b6e616d653d6e616d652c2076616c75653d4c697374696e672052756c652c20706172656e744e6f64653d546578744e6f6465205b746578743d6e756c6c2c20444e6f64653d444e6f6465205b69643d305d5d5d"
type="text" value="
15 months of jun, jul, aug, sep, oct
" style="width:400px;" />
</div>
Thanks, - Dave
ps - The error ...
org.xml.sax.SAXParseException: Premature end of file.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:124)
at com.myco.clearing.commons.xmlparser.XMLParser.parse(XMLParser.java:
53)
at com.myco.clearing.commons.xmlparser.XMLParser.parse(XMLParser.java:
35)
at com.myco.clearing.commons.xmlparser.XMLParser.parse(XMLParser.java:
80)
at com.myco.clearing.commons.xmlparser.XMLParser.parse(XMLParser.java:
35)
at
com.myco.pplus2.util.XmlToHtmlServiceTest.testInput(XmlToHtmlServiceTest.java:
52)
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.runners.model.FrameworkMethod
$1.runReflectiveCall(FrameworkMethod.java:44)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:
15)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:
41)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:
20)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:
28)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:
76)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:
50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:
50)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:
38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:
390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:
197)