0

ブック内のサブページ (最大 3) を取得し、それらのページをブックの親に移動する必要があるシナリオがあります。

お気に入り:

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

したがって、book1 の下のページ数が 3 より大きい場合、book1 を book1_h_1 と book2_h_2 の 2 つに分割し、ページ 1、ページ 2、ページを book1_h_1 の下に移動し、ページ 4 を book1_h_2 の下に移動します。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」にリスト「バッチ」を追加するにはどうすればよいですか?

誰かがこれについて私を助けることができますか?

4

1 に答える 1

0

1 つのイテレータですべてを行うことができます.....変数やバケットのリストに物事を保持する必要はありません。

「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");
}

ロルフル

于 2013-03-14T23:46:19.833 に答える