2013-03-16 36 views
0

我做了一個簡單的與DOCX4J代替,這要歸功於this awesome guide.DOCX4J - 複製其間的兩個標誌

但現在我試圖做更復雜的東西。

我想什麼做的是找到我的標記文本#1在文檔中,在文檔中找到我的標記文本#2,和所有內容複製插圖中的兩項。然後,我將粘貼該內容X次並進行進一步的修改。

有誰知道我會怎麼做,並且可能指向我所需要的關鍵功能是什麼?

回答

1

在一般情況下,這不是一件簡單的事情,因爲可能需要特殊處理(思考圖像,腳註,sectPr元素,書籤等)的兩個標記之間的各種結構。關於這種一般情況,見my blog post on MergeDocx

不過,如果你可以做一些簡單的假設,那麼它變得更容易。

首先,假設您的標記是塊級元素。

其次,假設你的文件是剛剛格式化文本和表格。

然後,你可以的塊級內容的列表上執行操作:

MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart(); 
List<Object> blocks = documentPart.getContent(); 

有XmlUtils.deepCopy根據需要克隆的對象。

對於那些違反假設2每個結構,需要具體經辦。如果你可以控制你的輸入文件,你可以管理它。

作爲替代標誌物#1和#2,其是類似於使用書籤,考慮使用一個塊級別的內容的控制。這避免了脆弱的點標籤;從XML的角度來看它更好,並且在Word用戶界面(從創作的角度)上提供了優勢。

+0

謝謝你,這有幫助,但是你是什麼意思的「塊級內容控制」? – Doug 2013-03-16 23:00:48

+0

啊,我想我回答了我自己的問題: http://www.opendope.org/opendope_conventions_v2.3.html – Doug 2013-03-16 23:06:25

+0

OpenDoPE確實使用內容控件,但它們首先是首要的WordML元素(它們被稱爲一個結構化的文檔標籤,因爲它們的元素名稱是'sdt')。塊級別可以包含段落和表格,並存在於上面的塊列表中(通常 - 它們也可以位於表格單元格中)。內聯的包含文本的運行,而不是段落或表格。 – JasonPlutext 2013-03-17 02:05:40