2017-01-27 24 views
0

我在我的路線中定義了一個標題,並希望使用標題的值來確定其他標題值。在xpath中使用Headers在路由中設置另一個頭?

例子:

<route id="use_reference_number"> 
<from uri="direct:file_name:use_reference_number"> 
    <setHeader headerName="FirstNameOfStudent"> 
    <xpath resultType="java.lang.String">//*/Student/StudentName/FirstName/text()</xpath> 
    </setHeader> 

    <setHeader headerName="NumberOfStudentByThatName"> 
    <xpath>count(//*/Student[StudentName/FirstName/text() = ${in.header.FirstNameOfStudent}])</xpath> 
    </setHeader> 
</route> 

基本上這裏基於從分立的x路的結果,我想,以確定第二個學生標籤的數量,最後用在選擇「NumberOfStudentByThatName」 - 當採取不同的途徑。但是當我使用這個表達式時,它返回0.我認爲它不能解析頭文件。

<setHeader headerName="NumberOfStudentByThatName"> 
    <xpath>count(//*/Student[StudentName/FirstName/text() = 'AMAN'])</xpath> 
</setHeader> 

當我像上面一樣使用它時,它的工作原理非常好,但我不想硬編碼任何值,而是使用輸入中的內容。

在這種情況下,我有兩個單獨的xmls,並希望以更清晰的方式使用它們。

回答

1

根據Camel XPath Component Documentation有特殊的XPath駱駝功能,如in:bodyin:header等: 我想你可以把它想:

<setHeader headerName="NumberOfStudentByThatName"> 
    <xpath>count(//*/Student[StudentName/FirstName/text() = in:header("FirstNameOfStudent")])</xpath> 
</setHeader> 

PS。我沒有測試它,並且我不確定標題名稱中的雙引號 - doc頁面顯示的是URL編碼值,如&#39;FirstNameOfStudent&#39;。所以,你可以弄明白。

相關問題