Как отменить xpath для подотчета в яшме? - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь перемещаться по узлам xml в обратном направлении, когда создаю подотчет, но это не работает.Мой отчет XPath /root/parent/child1, и я хочу, чтобы подотчет имел /root/parent/child2 в качестве XPath

<root>
  <parent>
    <child1>
    </child1>
    <child2>
    </child2>
  </parent>
</root>

Я написал следующее в выражении источника данных:

((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("//../child2")

Мой вопрособщий вопрос о xpath:

Разрешено ли ссылаться на предков в выражении источника данных с помощью ".." или "../.."?

1 Ответ

0 голосов
/ 08 октября 2018

Проблема в том, что вы пытаетесь subDataSource

Создает дополнительный источник данных , используя текущий узел (запись) каккорень документа

Следовательно, вы создаете новый документ с новым корнем в child1 (XPath не может выйти за пределы этого нового корня)

Вместо этого используйте dataSource

Создает вспомогательный источник данных , используя в качестве корневого документа документ, используемый "этим" источником данных .

В вашем примере это будет:

((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).dataSource("/root/parent/child2")
...