2014-10-29 5 views
0

winmerge를 사용하여 두 xml 파일을 비교하고 있습니다. 파일은 배포 파일이며 환경 간의 유사성을 찾고 있습니다. 주요 문제는 XML 파일이 기본 ID의 변경을 나타내는 태그로 흩어져 있다는 것입니다. 이것은 비교를 위해 중요하지 않습니다.Regx가 xml 파일의 요소를 제외합니다.

winmerge에서 흥미로운 요소 만 비교하기 위해 요소를 제외시키기 위해 사용할 수있는 정규 표현식을 만들고 싶습니다. 예 : APPL 2

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

있습니다 1

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

환경

환경 아래의 예에서 요소를 비교 xml을 생성하는 것은 xml을 라인 순서로 뱉어 내기 때문에 실제 xml과 비교되지 않습니다.

답변

2

정규식을 사용하는 것을 권장하지 않습니다. 정확하게 말하면 정말 효과적 일 것입니다. XML을 구문 분석합니다. 실제로는 정규식을 사용하고자하는 것이 아닙니다.

Win Merge은 라인 기반 diff 도구입니다. 실제로는 XML에 대해 전체적으로 효과적 일 필요는 없습니다. XML 트리 구조에 대한 개념이 더 많은 XML 기반 diff 도구를 사용하는 것이 좋습니다. 대부분의 XML 기반 diff 도구는 상용 제품으로 보이지만 오픈 소스 인 diffxml이 있으며보기 좋을 수도 있습니다.

본질적으로 더 정확해야하는 파일의 XML 기반 diff를 얻을 수 있고 전체적으로 줄 기반이 아니며 트리 구조를 고려하면 다음과 같이 diff를 자세히 조사 할 수 있습니다. ElementTree (, Python)과 같은 XML 구문 분석기를 사용합니다. 특히 재미 있다고 생각되는 태그를 대상으로하고이를 서로 비교하여 서로 다른지 확인합니다. diffxml이 너무 다루기 힘든 것으로 판명

경우, 그냥 바로 태그를 대상으로 두 개의 서로 다른 소스로부터 자신을 ElementTree 또는 이와 유사한 (즉, LXML)를 사용하여 분석을 수행하고, 비교하고 가치가있을 수 있습니다 너는 관심이있다. 한마디로

, 나는 아마 XML 인식은 diff 도구와 함께 XML 파서,이 경우 순수 정규식 ES보다 더 유용 할 것이라 생각합니다.