如何合并两个不相关的xpath查询的结果?

时间:2014-08-07 11:40:19

标签: java xpath merge cq5 jcr

我有两个xpath查询

query1query2

执行query1的结果是

row11
row12

执行query2的结果是

row21
row22
row23
row24

我想用以下结果编写单个查询:

row11
row12
row21
row22
row23
row24

你能帮助我吗?

2 个答案:

答案 0 :(得分:0)

我只需要List行添加两个查询的结果。如果两个结果都可以包含相同的行,则必须定义标识符,并使用带有此id的Map作为键。

简单List的示例:

QueryManager qm = session.getWorkspace().getQueryManager();
Query q1 = qm.createQuery(statement1, "xpath");
QueryResult r1 = q1.execute();
RowIterator rows1 = r1.getRows();

Query q2 = qm.createQuery(statement2, "xpath");
QueryResult r2 = q2.execute();
RowIterator rows2 = r2.getRows();

List<Row> rowsMerged = new ArrayList<Row>();
while (rows1.hasNext()) {
 rowsMerged.add(rows1.nextRow());
}
while (rows2.hasNext()) {
 rowsMerged.add(rows2.nextRow());
}

答案 1 :(得分:0)

您可以尝试使用XPath union(|)运算符。例如,给定这个XML:

<Employee>
    <EmpId>1</EmpId>
    <Name>Sam</Name>
    <Sex>Male</Sex>
</Employee>

这个包含union运算符的XPath:

(/Employee/EmpId | /Employee/Name)

XPath测试器中的输出节点:

<EmpId>1</EmpId>
<Name>Sam</Name>