2011-10-20 77 views
2

の早すぎる終わり、私はorg.xml.sax.SAXParseException:ファイル

... ...この名前空間のないXMLを解析しようと、

<gen type='section' name='Gen Info'>  
    <pmult type='input' name='Price Multiplier' nwidth='200' vlength='10'> 
     1000.0 
    </pmult> 
    <tunit type='input' name='Trading Unit' nwidth='200' vlength='10'> 
     BBL 
    </tunit> 
    <tmsure type='input' name='Trading Measure' nwidth='200' vlength='10'> 
     1000.0 
    </tmsure> 
</gen> 

と、このエラーを取得したJava 6を使用しています以下は

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.cme.clearing.commons.xmlparser.XMLParser.parse(XMLParser.java:53) 
at com.cme.clearing.commons.xmlparser.XMLParser.parse(XMLParser.java:35) 
at com.cme.clearing.commons.xmlparser.XMLParser.parse(XMLParser.java:80) 
at com.cme.clearing.commons.xmlparser.XMLParser.parse(XMLParser.java:35) 
at com.cme.clearing.commons.xml.DNodeTest.testParsingNodeWithChildNodes(DNodeTest.java:76) 
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.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) 

は...私はそれを解析するために使用しているJavaコードで

public static com.cme.clearing.commons.xml.Node parse(String xml) throws 
     ParserConfigurationException, SAXException, IOException { 
    xml = xml.trim(); 
    return parse(new ByteArrayInputStream(xml.getBytes())); 
} 

public static com.cme.clearing.commons.xml.Node parse(final InputStream xmlInputStream) 
     throws ParserConfigurationException, 
     SAXException, IOException { 

    final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    final DocumentBuilder db = dbf.newDocumentBuilder(); 
    final Document doc = db.parse(xmlInputStream); 

任意のアイデア何XMLについての不正な形式のですかどのような解析リットルと間違っています嗅覚? - Dave

+0

「com.cme.clearing.commons.xml.Node」とは何ですか? 'org.w3c.dom.Node'でなければなりません。 – lkuty

+0

このコードは、私の側でこのXMLを正常に解析します(sun jdk 1.6.0_16)。 – svaor

+0

あなたの属性には一重引用符の代わりに二重引用符を使用する必要があるかもしれません。 – Michael

答えて

1

おそらく、そのバージョンのSAXParserのバグかもしれません。これはIBMのJDKと同じ問題です。問題を解決するために、-Xbootclasspathオプションを使用して別のバージョンのSAXParser(xerces.jarとxml-api.jarをダウンロード)を削除しました。巨大な痛みですが、それは動作します。

+0

Miondはどうやってこれをやったのですか? – Manish

関連する問題