2012-11-20 22 views
0

我以不同的格式提出了這個問題,並提到了XSLT,但不認爲我解釋了我需要的解決方案。我有兩個XML文件,並使用Java和我試圖編寫一個程序,將接受源和目標XML文件,並在大多數情況下,他們將具有相同的結構,除了源將添加一些新的元素,我需要了解我如何瀏覽源DOM,並且如果在目標中沒有找到元素,那麼添加它或者在此時甚至只是讓程序輸出在目標文件中找不到的元素,以便手動修改目標文件。有誰知道一個實用程序,我可以做這樣的事情,只是得到目標XML文件中找不到的元素列表。我是否正確使用DOM解析器與SAX。我需要這方面的幫助,今天必須編寫它,並有大約50個xml文件合併!同步Java中的兩個DOM樹

我在想爲每個節點或元素導航整個源DOM的想法獲取像人/人/約翰的完整路徑,然後在我的目標DOM上以某種方式測試以查看該節點是否存在?這聽起來更像DOM還是SAX解析範例?

+1

當寫的問題,讓他們一樣容易地閱讀。那是你在那裏的一個很大的,雜亂的第一段。 – tucuxi

+0

如果你只是需要找到兩個文件之間的差異,那麼「diff」(命令行,unix/mac)或圖形差異工具(「meld」或「winmerge」)又如何呢?假設你的xml以類似的方式格式化,差異會彈出。 – tucuxi

+0

tucuxi,將聽取您對第一條評論的未來問題的反饋意見。 –

回答

3

看來你的問題似乎更簡單了。

  1. 解析源到DOM
  2. 解析DEST到DOM
  3. 遍歷源和目標在平行
  4. 每當你打在源若有所失在dest,加上它的深度優先搜索(如在評論中提到的,一個簡單的方法來做到這一點是Document.importNode()
+0

您可能還想提及Document#importNode http://docs.oracle.com/javase/6/docs/api/org/w3c/dom/Document.html#importNode(org.w3c.dom.Node,boolean) –

+0

太棒了,我是DOM的新手,你可以更詳細地解釋一下3)先深入探索source和dest並行搜索。如果你做了合同工作,我很樂意爲此付出代價。 –

+0

@DuncanKrebs - 請參閱[Node.getChildNodes()](http://docs.oracle.com/javase/6/docs/api/org/w3c/dom/Node.html#getChildNodes%28%29) – jtahlborn