我有一些XML格式的電子書。書籍的頁面使用處理指令進行標記(例如<?pg 01?>
)。我需要以純文本的方式提取本書的內容,一次一頁,並將每頁保存爲文本文件。這樣做的最好方法是什麼?從xml文檔中提取純文本最簡單的方法是什麼?
回答
我可能會使用腳輪來做到這一點。這是一個java工具,它允許你指定綁定到java對象,然後你可以輸出文本到文件
你需要一個電子書渲染器,用於你的書的格式(我非常懷疑它是XML,如果他們使用反斜槓作爲處理指令)。此外,如果您想要獲取實際文本,則XPath可以創建奇蹟,只需對所有文本使用// text()即可。
您可以嘗試將其轉換爲YAML並在文字處理器中對其進行編輯 - 然後一個簡單的宏應該修復它。
我剛剛瀏覽這個XML到YAML轉換實用程序 - 它很小,但我沒有測試它或任何東西。
http://svn.pyyaml.org/pyyaml-legacy/trunk/experimental/XmlYaml/convertyaml_map.py
使用XSL樣式表與<xsl:output method="text"/>
。
你甚至可以在eclipse中調試現在的樣式表。
最簡單的方法,假設您需要將其集成到Java程序中(如標籤所暗示的),可能會使用SAX解析器,如XMLReader規定。您爲text和processing 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解析器就不那麼費力。
+1對於XSLT 2.0推薦。 – 2010-10-18 22:39:41
你可以用Apache Tika像這樣做:如果
使用mavenbyte[] 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>
- 1. 從圖像中提取文本的最簡單方法是什麼?
- 2. 從PDF中提取數據的最簡單方法是什麼?
- 3. 獲取XmlElement頂級文本的最簡單方法是什麼?
- 4. 從源文件中提取字符串的最簡單方法是什麼?
- 5. 什麼是從gfortran讀取.dbf文件的最簡單方法
- 6. 從Django發送文本最簡單的方法是什麼?
- 7. MVC2:什麼是從文本框回發最簡單的方法
- 8. 從XML中刪除值的最簡單方法是什麼
- 9. 從文件中提取文本的更簡單的方法
- 10. 最簡單的方法:在XML文檔中的HTML中斷
- 11. 使用javascript製作文檔對象副本的最簡單方法是什麼
- 12. 使用GWT讀取XML文件的最簡單方法是什麼?
- 13. 從Silverlight富文本框中提取純文本 - 從LINQ到XML
- 14. 使用PHP從MS Word文檔中提取圖像的最簡單方法?
- 15. 什麼是您可以從JavaScript文件中讀取最簡單的方法?
- 16. 什麼是製作自我提取PE的最簡單方法?
- 17. 創建Openstreetmap提取mbtiles文件的最簡單方法是什麼?
- 18. 在Chrome中,查看文檔的MIME類型的最簡單方法是什麼?
- 19. 在java中編寫文本文件的最簡單方法是什麼
- 20. 什麼是從文本生成關鍵字的簡單方法?
- 21. 什麼是通過EF訪問從一系列數據庫表中創建XML文檔的最簡單方法?
- 22. 什麼是從十六進制中提取8位的最簡單方法?
- 23. 從Scala期貨列表中提取成功的最簡單方法是什麼?
- 24. 在c#中加密文件最簡單的方法是什麼?
- 25. 簡單的方法來從文本中提取日期熊貓
- 26. 從文件中提取版本字符串的最佳方法是什麼?
- 27. 從PHP腳本獲取和解釋XML文件響應的最簡單方法是什麼?
- 28. 在C++中生成xml最簡單的方法是什麼?
- 29. 什麼是替換文本文件中的文本的簡單方法
- 30. 從iPhone獲取日誌文件的最簡單方法是什麼?
這不會告訴他哪裏把它瓜分以便每個頁面都進入一個單獨的輸出文件。 – LarsH 2010-10-18 20:21:32