2012-07-19 139 views
0

我正在使用com.lowagie.text.xml.SAXiTextHandler使用iText(v-2.1.7)將XML轉換爲PDF。雖然我可以看到我正確使用標籤,但我得到了下面的錯誤。驗證XML形成的是有效的,我可以在瀏覽器中看到它沒有錯誤。嘗試執行parser.parse(....)時代碼失敗。我檢查了我寫標籤的方式,對我來說看起來很好。我基本上添加了表格標籤,其中包含inturn包含單元格標籤的行標籤。 單元格標籤內部有一個單獨的段落標籤(或),有時段落內有一個段落和一個塊標籤。有什麼辦法可以解決這個問題嗎?PDF IText | ClassCastException - com.lowagie.text.Paragraph不能轉換爲com.lowagie.text.Table

*刪除XML中的所有段落標籤並再次嘗試。它返回相同的錯誤 - 在這裏使用了新的XML - http://pastebin.com/hmyPcGDw *

*即使這樣簡單的XML文件現在產生相同的異常 - http://pastebin.com/89U9vybt *

對我來說,它看起來像一個問題com.lowagie.text.xml.SAXiTextHandler。任何幫助?

java.lang.ClassCastException: com.lowagie.text.Paragraph cannot be cast to com.lowagie.text.Table 
     at com.lowagie.text.xml.SAXiTextHandler.handleEndingTags(Unknown Source) 
     at com.lowagie.text.xml.SAXiTextHandler.endElement(Unknown Source) 
     at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:606) 
     at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endNamespaceScope(XMLDTDValidator.java:2054) 
     at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:2005) 
     at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:879) 
     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1741) 
     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2898) 
     at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607) 
     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488) 
     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835) 
     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) 
     at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123) 
     at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210) 
     at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568) 
     at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:302) 
     at javax.xml.parsers.SAXParser.parse(SAXParser.java:195) 
+0

你可以發佈你的XML嗎? – mabbas 2012-07-19 10:25:57

+0

這裏是XML - http://pastebin.com/qJsDkj4G – 2012-07-19 11:12:30

回答

1

那是因爲你之前,你的XML標記(更準確地說是空格的<table>標籤後)有一些白色的空間。我試着用你的例子,我有同樣的例外。我把你的xml代碼複製/粘貼到eclipse(或記事本++)中,我將它格式化(刪除所有不需要的空白區域),然後我再次嘗試,問題解決了! pdf很好地生成!

+0

感謝您的指針。好吧,我嘗試了簡單的,它也適用於我。我現在面臨的問題是使用2000+行XML.I,從

標記到
標記的空格被刪除,並將其刪除。我仍然收到錯誤。我應該在開始標記和結束標記之後沒有任何空格(標籤/空格)嗎?您能否讓我知道這裏的指導原則以及如何輕鬆刪除不需要的空白? – 2012-07-19 18:40:14

+1

'

'標籤後面不應有空格('com.lowagie.text.xml.SAXiTextHandler'中存在一個錯誤)。要刪除空格,你可以在'eclipse'中複製/粘貼你的xml代碼,然後'ctrl + a'來選擇所有的代碼,然後'ctrl + shift + f'來格式化它。或者如果您使用的是記事本++,安裝「XML工具」插件(菜單插件,插件管理器),然後運行:菜單插件,Xml工具,漂亮打印(僅限XML - 帶換行符)。 – mabbas2012-07-19 19:22:09