我有一个场景,我需要在书中获取子页面(最多3个)并将这些页面移动到书的父级。
像:
<book>
<book1>
<page1>
<page2>
<page3>
<page4>
</book1>
</book>
因此,如果book1下的页数大于3,则将book1拆分为2,即book1_h_1和book2_h_2,并移动book1_h_1下的page1,page2,page,并将book4移至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?
添加列表”批次“有人可以帮我吗?
答案 0 :(得分: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