2015-11-06 83 views
0

我想駱駝XMLTokenizer語言分裂以下XML:拆分嵌套的XML與駱駝標記生成器語言

<units> 
    <unit type="menu"> 
     <id>1</id> 
     <unit type="submenu"> 
      <id>1</id> 
     </unit> 
    </unit> 
    <unit type="menu"> 
     <id>2</id> 
     <unit type="submenu"> 
      <id>1</id> 
     </unit> 
    </unit> 
</units> 

我分路器看起來是這樣的:

.split().tokenizeXML("unit").streaming() 

,我的問題是,它是生產沒有結束標籤分裂這樣的XML:

<unit type="menu"> 
    <id>1</id> 
    <unit type="submenu"> 
     <id>1</id> 
    </unit> 

這樣看來,與tokenizeXML()是由於它只會掃描< /單元>結束標記,因此無法實現此功能。什麼是處理這種情況的首選方式?有沒有其他的分裂方法可以讓我得到我需要的結果?我想使用streaming(),所以與xpath()分離不是我的選擇。

+0

您可以將您的xml解組爲一個java類,然後將單元對象列表傳遞給拆分方法 – fiw

+0

在這種情況下,我寧願不使用POJO。 – jnupponen

回答

1

您可以使用允許使用支持流模式的SAX api的camel-stax。

您需要定義一個POJO,並聲明綁定的JAXB註釋。

+0

在沒有使用POJO的情況下,可以在駱駝中解決這個問題嗎? – jnupponen

+0

不,但您可以編寫自己的代碼來解析xml,如tokenizeXML,但避免嵌套的命名衝突。你可能會做一些你認爲type ='unit'的東西。 –

+0

好的,謝謝你的信息!我想我應該考慮使用POJO模型。 – jnupponen