2014-10-29 90 views
0

我使用win合併比較兩個xml文件。這些文件是部署文件,我正在尋找環境之間的差異。主要問題是xml文件中散佈着指示底層id變化的標籤,例如123但這比較不重要。Regx排除xml文件中的元素

我想創建一個正則表達式,我可以在winmerge中使用排除元素來僅比較有趣的元素。例如在本例中比較元件下方

環境1

<table> 
<tableInfo> 
<tableId>293</tableId> 
<name>Table Name New</name> 
<repositoryId>0</repositoryId> 

環境2

<table> 
<tableInfo> 
<tableId>965</tableId> 
<name>Table Name Old</name> 
<repositoryId>0</repositoryId> 

請注意,申請產生的XML吐出這些逐行順序,所以這是不是一個真正的XML比較

回答

2

我不會推薦使用正則表達式爲此...做到真正準確,你真的需要有效解析XML,這實際上不是你想要使用正則表達式的東西。

Win Merge是一款基於行的diff工具,它並不一定對XML完全有效。我會建議嘗試一種基於XML的差異工具,它具有更多XML樹形結構的概念。大多數基於XML的差異工具似乎都是商業產品,但有diffxml,這是開源的,可能值得一看。

如果你可以得到基於XML的文件差異,這本應該更準確,因爲它們不是完全基於行,並考慮樹結構,你可以進一步深入研究差異一個XML解析器,如ElementTreePython,專門針對您認爲很有趣的標籤,並將它們相互比較以查看它們是否與衆不同。

如果diffxml證明是太笨重,它可能是值得只是做使用ElementTree的或相似(即LXML)解析和做比較自己免受只是在標記有針對性的兩個不同的來源你有興趣。

總之,我認爲XML解析器,或許與XML的差異工具組合,會比在這種情況下,純正則表達式 ES更加有用。