访问BIRT报告中细节部分的内容

访问BIRT报告中细节部分的内容,birt,Birt,我正在使用BIRT报告,以xml格式生成它,我正在编写发射器(BIRT插件)。我需要一个xml报告,它在同一报告中的某个部分的基础上包含一些重复的部分。我正在使用子报表。所以报告结构是这样的 在编写发射器时,我需要提取单元格元素中所有文本元素的内容。下面是我的发射器中用于sartCell方法的代码 public void startCell(ICellContent arg0) { System.out.println("text in Cell:: "); Syste

我正在使用BIRT报告,以xml格式生成它,我正在编写发射器(BIRT插件)。我需要一个xml报告,它在同一报告中的某个部分的基础上包含一些重复的部分。我正在使用子报表。所以报告结构是这样的


在编写发射器时,我需要提取单元格元素中所有文本元素的内容。下面是我的发射器中用于sartCell方法的代码

    public void startCell(ICellContent arg0) {
    System.out.println("text in Cell:: ");
    System.out.println("text in Cell:: " + arg0.getInstanceID());

    for(Object ie : arg0.getChildren())
    {
        if(ie instanceof  LabelContent)
        {
            LabelContent lc = (LabelContent)ie;
            stringBuilder.append(lc.getText());
            System.out.println(lc.getText());
        }
        else if(ie instanceof ForeignContent)
        {
            ForeignContent fc = (ForeignContent)ie;
            stringBuilder.append(fc.getRawValue());
            System.out.println(fc.getRawValue());
        }

    }

}
我可以通过这种逻辑访问单元格及其所有文本内容。但我想对列表细节部分的表中的所有单元格做同样的事情问题是详细信息部分中的单元格在ICellContent.getChildren()上为空。

是的,我的startText方法根本没有被调用。以下是我的埃米特的声明

公共类XmlEmitter扩展ContentEmitterAdapter{…}

以下是RPT的设计结构

<List>
    <Header>
           <Table><Detail><Cell><Text>...DynamicText....</Text>.....</Table>
    </Header>
    <Detail>
           <Table><Detail><Cell><Text>...DynamicText....</Text>.....</Table>
    </Detail>
</List>

…动态文本。。。。。。。。。
…动态文本。。。。。。。。。
在上面的结构中,我的文本元素本身就是我想要生成报告的XML结构。所以我只想附加xml的所有内容,并将其写入outputstream。如果是文本元素,请提前建议,谢谢

public void startText(ITextContent text) 

将被调用,但如果是动态文本元素

public void startForeign(IForeignContent foreign) throws BirtException
将被调用

您可以使用下面的代码段来获取动态文本值

@Override
public void startForeign(IForeignContent foreign) throws BirtException {        
    Object rawValue = foreign.getRawValue();    
}
public void startForeign(IForeignContent foreign) throws BirtException
@Override
public void startForeign(IForeignContent foreign) throws BirtException {        
    Object rawValue = foreign.getRawValue();    
}