如何获取表的索引值?

时间:2016-09-16 09:46:46

标签: java xml docx4j

我尝试使用以下方法获取表的索引值

 if(tbl.getParent() instanceof Body )
{
  Body body = (Body) tbl.getParent();
  int tIndex = body.getContent().indexOf(tbl); 
  body.getContent().remove(tbl); 
}

另一种方法是使用contentAccessor

 if(tbl.getParent() instanceof ContentAccessor )
{
  ContentAccessor ca = (ContentAccessor) tbl.getParent();
  int tIndex = ca.getContent().indexOf(tbl);
  ca.getContent().remove(tbl); 
}

但不是得到实际的索引值而是得到-1作为tIndex。它也不是从它的父级删除tbl(ca.getContent()。remove(tbl);)。

有没有其他方法可以获得Tbl的索引值?

1 个答案:

答案 0 :(得分:1)

    ContentAccessor ca = (ContentAccessor) tbl.getParent();
    int tIndex = getIndex(ca.getContent(), tbl);
    if(tIndex != 98761){
     //do whatever you want to
    }

    private static int getIndex(List<Object> theList, Object bm) 
    {
      for (Object ox : theList) 
      {
        if (XmlUtils.unwrap(ox).equals(bm)) 
        {
            int o = theList.indexOf(ox);
            return o;

        }
      }
    return 98761;

   }

在我的情况下,tIndex不会触及那么多的数字(98761)。如果您觉得不安全,只需增加返回值。