簡體   English   中英

Java上下文sax / stax解析

[英]Java contextual sax / stax parsing

我想將直接作為子節點出現的所有文本元素提取到根節點 我使用DefaultHandler了解了java標准sax fascilities; 但它似乎不是它的路徑意識。

問題是只獲得first-level only節點,而不是僅提取文本節點

是否有任何非DOM導向的方法來做到這一點? (注意,節點名稱不是預先知道的)

[編輯]

樣本輸入

<root>
   <a>text1</a>
   <b>text2</b>
   <c>text3</c>
   <nested>
       <d>not_text4</d>
       ...
   <nested>
   ...
</root>

樣本輸出

Map<String, String> map := {
    {a, text1}
    {b, text2}
    {c, text3}
}

目前解決了面向DOM的解決方法。 雖然存在為SAX / STAX提供xpath表達式子集的庫。

SAX和StAX確實不具有路徑意識,因為它們是面向事件的。 雖然實現跟蹤解析級別的處理程序當然是可能的,但使用XPath可能會更好。

一個更復雜的策略可能是編寫一個XSLT轉換,它只保留你所追求的元素,然后使用SAX或Stax處理結果。

這將是一個小開銷,但你有一個強大的工具來使用xml。 試試JAXB

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM