2010-10-18 111 views

回答

0

我可能會使用腳輪來做到這一點。這是一個java工具,它允許你指定綁定到java對象,然後你可以輸出文本到文件

0

你需要一個電子書渲染器,用於你的書的格式(我非常懷疑它是XML,如果他們使用反斜槓作爲處理指令)。此外,如果您想要獲取實際文本,則XPath可以創建奇蹟,只需對所有文本使用// text()即可。

+0

這不會告訴他哪裏把它瓜分以便每個頁面都進入一個單獨的輸出文件。 – LarsH 2010-10-18 20:21:32

0

使用XSL樣式表與<xsl:output method="text"/>
你甚至可以在eclipse中調試現在的樣式表。

1

最簡單的方法,假設您需要將其集成到Java程序中(如標籤所暗示的),可能會使用SAX解析器,如XMLReader規定。您爲textprocessing instructions編寫ContentHandler回調函數。

當您的p-i處理程序被調用時,您將打開一個新的輸出文件。

當您調用文本處理程序時,將字符數據複製到當前打開的輸出文件。

This tutorial有一些有用的示例代碼。

但是如果您不需要將它集成到Java程序中,我可能會使用XSLT 2.0(Saxon is free)。 XSLT 1.0將不允許多個輸出文檔,但XSLT 2.0將會更容易,並且它還將使「里程碑標記」(您的「pg」處理指令)更容易分組。如果您對這種方法感興趣,只需詢問...並提供有關輸入文檔結構的更多信息。

P.S.即使您需要將做到需要將其集成到Java程序中,您可以從Java調用XSLT - 例如,Saxon是用Java編寫的。不過,我認爲如果你只是在處理PI和文本,那麼使用SAX解析器就不那麼費力。

+0

+1對於XSLT 2.0推薦。 – 2010-10-18 22:39:41

0

你可以用Apache Tika像這樣做:如果

使用maven
byte[] value = //your xml content as a byte array 
    Parser parser = new XMLParser() 
    org.xml.sax.ContentHandler textHandler = new BodyContentHandler(-1) 
    Metadata metadata = new Metadata() 
    ParseContext context = new ParseContext() 
    parser.parse(new ByteArrayInputStream(value), textHandler, metadata, context) 
    return textHandler.toString() 

,你可能會想這兩者的下面:

  <dependency> 
      <groupId>org.apache.tika</groupId> 
      <artifactId>tika-core</artifactId> 
      <version>1.13</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tika</groupId> 
      <artifactId>tika-parsers</artifactId> 
      <version>1.13</version> 
     </dependency> 
相關問題