将List <element>添加到JDOM元素</element>

时间:2013-03-14 23:07:17

标签: list element jdom

我有一个场景,我需要在书中获取子页面(最多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?

添加列表”批次“

有人可以帮我吗?

1 个答案:

答案 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