2011-07-05 27 views
1

我遇到了xml文件的一部分問題。我用sax和java解析它。
我不能設法得到文本的所有部分(文本的開始,文本的中間,文本的結尾)。sax:解析混合內容文本的麻煩

<sometag type="aType"> 
    beginning of the text   
    <anothertag type="anotherType" target="aTarget">middle of the text</anothertag> 
    end of the text 
</sometag> 
+1

歡迎來到SO。爲了幫助你,你將不得不提供無法使用的代碼,否則我們只能猜測。請看看http://stackoverflow.com/questions/how-to-ask –

回答

1

SAX通常令人驚訝,直到你知道什麼期望從經驗。

您可能想暫時在事件處理程序中放置一些控制檯日誌記錄,或者甚至只是將它們全部斷點,然後設置一些測試來查看所獲得的結果。我更喜歡登錄這樣的案例,因爲它給了我所期望的「全貌」。

FWIW,Stax在性能上稍微簡單一些。

+0

或者,用一個控制檯日誌事件處理程序編寫一個獨立的實用程序。你可能會再次使用它。 –

2

每個人都搞砸了ContentHandler characters方法,因爲它完全不直觀。訣竅是可以對單個元素文本節點的字符方法進行多次調用,您必須將傳入的片段累積到緩衝區中。 See the Java tutorial on SAX.對於混合內容,您必須從startElement和endElement的緩衝區中獲取文本。

如果這不能回答你的問題,請給我們看一些代碼。

+1

另外,不要以爲只有一個嵌入式標籤時你纔會接到多個電話 - 你也會偶爾**看起來沒有任何理由的多次電話 - 我猜他們是在輸入時發生的緩衝區邊界。 –