[英]Export DOM Document as XML with userData as Attribute
我正在處理帶有數據的Document
對象,某些節點具有與之關聯的userData(使用setUserData(<key>, <value>, <handler>)
)。 我想將Document的副本保存為XML,並導出userData值作為屬性。
變壓器
這是我知道的輸出XML的方式:
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(<Document>);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
但是,在那里我找不到找到舊的和新的Node對象都存在的方法的方法–挖掘Transformer
,我唯一能找到的地方就是DOM2TO
類, DOM2TO
將節點轉換為例如。 SAX調用startElement(...)
,但是在這里我不能在不復制粘貼整個代碼的情況下更改任何內容。
UserDataHandler
我的第二種方法是使用UserDataHandler與userData一起附加到Node。 該處理程序必須提供一個稱為例如的方法handle(short operation, String key, Object data, Node src, Node dst)
。 克隆節點時。 因此,可以編寫一個UserDataHandler來檢查src
節點中的userData並將其作為dst
的屬性添加,然后在從克隆寫入XML之前簡單地克隆Document。 不幸的是 , handle(...)
在dst
Node克隆未完成的階段被調用:當src
具有屬性時, dst
當時將指向同一AttributeMap
實例。 因此,整個過程毫無價值,因為添加的屬性也會添加到原始文檔中,我不想這樣做。
解決了–我必須使用在NODE_IMPORTED
上運行的UserDataHandler:然后使用完全克隆的dst
節點調用handle(...)
方法。
但是,這不是一個很好的解決方案,因為克隆(hrm, 導入 )文檔會使所需的空間增加一倍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.