2013-03-14 51 views
0

我有一種情況,我需要得到一本書(最多3)內部的子頁面,然後將這些網頁,以書的家長。添加列表<Element>到JDOM元素

像:

<book> 
<book1> 
    <page1> 
    <page2> 
    <page3> 
    <page4> 
</book1> 
</book> 

所以,如果下book1的網頁數量是大於3,分裂BOOK1爲2即book1_h_1和book2_h_2和移動第1頁,第2頁,頁面下book1_h_1和下book1_h_2移動第4頁。在book1下可能會有超過4頁的情景,比如10或更多。

爲了獲得多少新書需要創建我做了以下

List<Element> elChildren = book1.getChildren(); 
int size = 3; 
int numBatches = (elChildren.size()/size) + 1; 
List<Element> batches = null; 
for (int index = 0; index < numBatches; index++) { 
int count = index + 1; 
int fromIndex = Math.max(((count - 1) * size), 0); 
int toIndex = Math.min((count * size), elChildren.size()); 
batches = elChildren.subList(fromIndex, toIndex); 
} 

public static void createElementNew(Element parent, int i){ 
for(int q = 1; q <=i; q++){ 
parent.addContent(new Element("book1_h_"+q)); 
} 
} 

我的問題是如何添加列表「批」到新創建的書「book1_h_1和book1_h_2?

有人可以幫助我在這?

回答

0

你可以做整個事情有一個迭代器.....沒有必要繼續在變量的東西,並列出桶。

「booke」將指向book1的元素...

Element booke = ..... ; 
Element parent = booke.getParentElement(); 
int bookpos = parent.indexOf(booke); 
Iterator<Element> lit = booke.getChildren().iterator(); 

int cnt = 0; 
int bkh = 1; 
Element bke = null; 
String namebase = booke.getName() + "_h_"; 
while (it.hasNext()) { 
    Element page = it.next(); 
    if (cnt >= 3) { 
     if ((cnt % 3) == 0) { 
      bkh++; 
      bookpos++; 
      bke = new Element(namebase + bkh); 
      parent.addContent(bookpos, bke); 
     } 
     it.remove(); 
     bke.add(page); 
    } 
    cnt++; 
} 
if (cnt > 3) { 
    booke.setName(namebase + "1"); 
} 

Rolfl

+0

非常感謝你..這真的幫助... :) – Tarun 2013-03-19 18:24:51

+0

嗨Rolfl,你能幫幫我這個問題? http://stackoverflow.com/q/15627183/1634388 – Tarun 2013-03-26 10:59:23