2010-10-27 69 views
0

我有創建難以在基本文本編輯器中閱讀的XML文檔的代碼。我嘗試使用transformer.setOutputProperty(OutputKeys.INDENT, "yes")這是更好,但現在當我讀回XML時,我有所有這些以前沒有的惱人的文本節點。所有這些文本節點都包含換行符「\ n」。有沒有什麼方法可以在我讀取XML時排除它們,而無需編寫代碼來自行解析和刪除它們?某種過濾器可能?從XML過濾格式化文本節點

編輯

我住進了丹尼爾的建議,setIgnoringElementContentWhitespace(true)但在兩個問題就來了:

  1. 我必須把DOMBuilderFactory進入驗證模式
  2. 驗證模式需要一個DTD - 我不知道有一個DTD,我創建的程序允許用戶在飛行中創建新標籤...

因此,使事情變得複雜ab它更多,有沒有辦法做到這一點沒有DTD?或者當我保存XML文件時,是否有簡單的方法來創建DTD?

回答

0

AFAIK大多數XML解析器都有跳過空文本節點的選項,就像它們總是發生的一樣。至少,Xerces確實如此。該功能被稱爲

http://apache.org/xml/features/dom/include-ignorable-whitespace

,並允許將其禁用(其默認啓用的,如果我的理解是正確的)。描述:

​​
+0

在旅遊鏈接上有一個404 ... – BigMac66 2010-10-27 20:53:09

+0

是不是鏈接!這是功能名稱(爲此提供Xerces補丁)。搜索鏈接以瞭解更多信息。 – Daniel 2010-10-28 10:01:05

0

一個XSL Transform會做的伎倆,這正是XSL是什麼。操作XML文件以不同格式顯示它們。過濾出有問題的節點並通過其他方式通過其他途徑非常簡單。

不管你做什麼,做嘗試,並用正則表達式的工作來解析XML,XML是不是一個regular language,追求正則表達式解析XML是一種路,導致madness,和馬車惡化脆弱的代碼。