Có bất kỳ công cụ Xml Diff / Merge miễn phí nào có sẵn không? [đóng cửa]


105

Tôi có một số tệp cấu hình trong các ứng dụng .net của mình mà tôi muốn hợp nhất các phần tử cài đặt ứng dụng, v.v.

Tôi đã định bắt đầu làm việc đó theo cách thủ công như tôi thường làm, tuy nhiên tôi nghĩ rằng phải có một công cụ GUI khác XML ở đâu đó.

Công cụ sẽ có thể chuyển đến cấp phần tử để so sánh và hiển thị sự khác biệt, v.v.

Tuy nhiên, Google không đưa ra kết quả về công cụ miễn phí đáng kể và không có gợi ý cho bất kỳ điều gì có giá trị.

Một công cụ như vậy có sẵn không? Điều đó rất hữu ích? Miễn phí?

Cảm ơn trước. :)

Biên tập:

Dưới đây là một chút làm rõ về chức năng sẽ biến công việc thủ công tẻ nhạt, dễ gặp lỗi của tôi thành một công việc đơn giản hơn trong 1 phút (và có khả năng tự động hóa):

Trong KDiff3, bạn có thể thực hiện khác / hợp nhất toàn bộ thư mục. Có một sự khác biệt phân cấp rất chính xác, thân thiện với người dùng và rõ ràng. Tuy nhiên, tôi quan tâm đến việc tìm kiếm một giải pháp tương tự thay vì phân cấp thư mục, một phân cấp phần tử XML.

Nếu không có phần mềm nguồn mở như vậy, tôi đang xem xét tạo một phần mềm trên CodePlex để cung cấp chức năng này.

Câu trả lời:


11

KDiff3 không dành riêng cho XML, nhưng nó miễn phí. Nó thực hiện một công việc tốt là so sánh và hợp nhất các tệp văn bản.


3
Tôi đồng ý rằng tôi đang sử dụng KDiff3 vào lúc này, tuy nhiên một công cụ dành riêng cho XML có thể đi xuống cấp phần tử sẽ rất tuyệt vời.
Russell

2
Tôi đã nghĩ từ góc độ này: cách KDiff thực hiện sự khác biệt thứ bậc của các thư mục, sự khác biệt thứ bậc của các phần tử cũng có thể hoạt động. Vì vậy, nếu một phần tử đã thay đổi, thì tôi đồng ý, các phần tử mẹ cũng nên được gắn cờ là đã thay đổi.
Russell

25
mọi người đều nhận ra rằng trong xml, các nút con không được đảm bảo theo bất kỳ thứ tự cụ thể nào, vì vậy bất kỳ "công cụ" nào báo cáo rằng một cái gì đó không theo cùng một thứ tự từ tệp này sang tệp khác thực sự sẽ không phải là công cụ tuân thủ xml thực sự

7
Nếu thứ tự thay đổi, thì các phần tử là khác nhau. Tùy thuộc vào ngữ nghĩa của tài liệu XML được đề cập, thứ tự có thể có ý nghĩa hoặc có thể không. Ví dụ: trong XHTML rõ ràng là thứ tự quan trọng.
George Lund

7
Vấn đề là một công cụ khác biệt thông thường hoạt động dựa trên dòng. Có các công cụ khác biệt cụ thể cho các tệp CSV, ví dụ: hiểu định dạng mà nó đang khác. Sự hiểu biết đó càng tốt thì sự khác biệt có thể xảy ra càng hiệu quả. Một công cụ khác biệt của XML tốt sẽ có thể phân tích cú pháp XML, sử dụng một lược đồ để xác định các ràng buộc, chẳng hạn như thứ tự có quan trọng hay không, và sau đó sử dụng kiến ​​thức đó để mang lại trải nghiệm khác biệt / hợp nhất hiệu quả hơn nhiều.
Stijn de Witt,

32

Hãy xem các công cụ so sánh tệp , từ đó tôi đang sử dụng WinMerge . Nó có khả năng so sánh các tài liệu XML (bạn có thể muốn kích hoạt bộ DisplayXMLFileslọc trước).

DisplayXMLFiles.dll - Plugin này in các tệp XML đẹp mắt bằng cách chèn các tab và ngắt dòng. Điều này hữu ích cho các tệp XML không có trả về dòng ở các vị trí thuận tiện.

WinMerge đang hoạt động

Xem thêm bảng so sánh tính năng của tôi .


6
+1 Winmerge phiên bản 2.12.4.0; Menu "Plugin" -> "Danh sách" -> đánh dấu vào "Enable Plugins"; Menu "Plugin" -> chọn "Tự động giải nén". Đã thử nghiệm với tệp XML có tên tệp có phần mở rộng là .xml và nó có vẻ hoạt động.
Alessandro Jacopson

10
Nó không giải quyết tốt với các thuộc tính ở các thứ tự khác nhau, vì vậy tính hữu dụng của nó có thể bị hạn chế, tùy thuộc vào tình huống của bạn.
Michael Kohne

Sử dụng chuyển đổi trên bất kỳ tập tin XML đầu tiên đến các yếu tố sắp xếp và thuộc tính: stackoverflow.com/questions/4091085/xslt-to-sort-nodes-by-name
LarryDavid

1
Có vẻ như plugin không còn khả dụng.
Fernando Gonzalez Sanchez

Tôi không chắc tại sao nó không có trong trình cài đặt, nhưng tôi có thể lấy nó từ
kho

21

Tôi đã viết và phát hành một ứng dụng Windows giải quyết cụ thể vấn đề so sánh và hợp nhất các tệp XML.

Dự án: Hợp nhất có thể thực hiện so sánh hai và ba cách và hợp nhất bất kỳ tệp XML nào (trong đó hai tệp được coi là các bản sửa đổi độc lập của tệp cơ sở chung). Bạn có thể hướng dẫn nó xác định các phần tử trong tệp đầu vào bằng các giá trị thuộc tính hoặc nội dung của các phần tử con, trong số những thứ khác.

Nó hoàn toàn có thể kiểm soát được thông qua dòng lệnh và cũng có thể tạo báo cáo văn bản chứa sự khác biệt giữa các tệp.

Dự án: Hợp nhất hợp nhất ba tệp XML


Xin chào @James Cảm ơn vì thông tin. Rõ ràng sẽ rất tuyệt nếu nó miễn phí, nhưng nó cung cấp một số chức năng rất thú vị - và ví dụ của bạn ở trên là một điển hình về lý do tại sao công cụ này lại hữu ích đến vậy! Cảm ơn cho bài viết của bạn. :)
Russell

Tôi đã thử Project :: Merge và tiếc là nó không thể đối phó với nhiệm vụ của tôi. Tôi có văn bản HTML trong paras ( <p>) được thêm định dạng (như <i>, <em>). Vì vậy, Project :: Merge cho thấy rằng para hoàn chỉnh đã được thay đổi, nó không thực hiện phân tích từ chuyên sâu.
dma_k

Vâng, tôi rất tiếc phải nói rằng hỗ trợ XHTML (nó sẽ không bao giờ hỗ trợ HTML kế thừa) khá hạn chế về mặt đó, cũng như sự khác biệt văn bản trong các khối XML nói chung. Hầu hết công việc cho đến nay đều tập trung vào các tệp XML kiểu cấu hình trong đó dữ liệu ký tự dạng tự do bị hạn chế về mức độ và cách sử dụng. Hy vọng rằng tôi sẽ cải thiện Project: Merge trong lĩnh vực này trong một bản phát hành trong tương lai.

2
-1, OP hỏi về phần mềm miễn phí. Project Merge là phần mềm dùng thử và cũng chưa được cập nhật trong 3 năm.
yourbuddypal

3
Dự án: Merge hiện đã được thay thế bằng Oso XML Merge: osocorporation.com/xmlmerge/index.php
leetNightshade

15

Có một số công cụ khác biệt và hợp nhất XML dựa trên Java được liệt kê ở đây:

Sự khác biệt về XML nguồn mở được viết bằng Java

Liên kết đã thêm:


2
Tôi gặp sự cố khi tìm bất kỳ liên kết nào đến phần mềm trong liên kết bạn đã đề cập.
Russell

Yeah, tôi cũng vậy! Có thể cần đến Google một chút ...
Chris Fulstow

3

Tôi sử dụng TortoiseMerge, được bao gồm trong chương trình TortoiseSVN

Và chúng ta đã nói về các công cụ File Diff trong chủ đề này, không dành riêng cho XML

/programming/1830962/file-differencing-software-on-windows


1
Cảm ơn S.Mark, như tôi đã đề cập với epotter, tôi đã sử dụng KDiff3 cho các tệp khác biệt chung, tuy nhiên tôi thực sự thích một tiện ích khác biệt dành riêng cho XML nếu nó có sẵn (nếu không, tôi sẽ khởi động một tiện ích mã nguồn mở :))
Russell

>> (if not, I will start up an open-source one :)Chà, tuyệt vời! sẽ mong chờ nó, vui lòng thả liên kết ở đâu đó ở đây Nếu nó bắt đầu.
BẠN

3

Mặc dù đây không phải là một công cụ GUI, nhưng các thử nghiệm nhanh của tôi đã chỉ ra rằng diffxml có một số hứa hẹn. Tác giả dường như đã suy nghĩ về sự phức tạp của việc biểu diễn các khác biệt cho các phần tử lồng nhau theo cách tiêu chuẩn hóa (đặc tả ngôn ngữ cập nhật DUL - Delta của ông).

Cài đặt và chạy các công cụ của anh ấy, tôi có thể nói rằng đầu ra văn bản thô khá rõ ràng và ngắn gọn. Nó không cung cấp mức độ sợ hãi ngay lập tức như một công cụ GUI, nhưng với điều kiện đầu ra được tiêu chuẩn hóa dưới dạng DUL, có lẽ bạn sẽ có thể lấy điều đó và xây dựng một công cụ để tạo ra một biểu diễn trực quan. Tôi chắc chắn muốn xem một cái.

Phần "liên kết" của tác giả có tham chiếu đến một số công cụ khác biệt XML khác, nhưng như bạn đã đề cập trong bài đăng của mình, tất cả chúng đều thuộc sở hữu độc quyền.


4
Kinh nghiệm của tôi là: Nó hoàn toàn không thể xử lý việc sắp xếp lại thứ tự của các phần tử, đó là điều được mong đợi trong một công cụ XML (như một tùy chọn, vì đôi khi thứ tự là quan trọng) và thay vì khác biệt tối thiểu, nó hiển thị toàn bộ các phần tử đã thay đổi . Về cơ bản, tệp khác biệt chỉ là một tệp XML hoàn toàn mới nếu có những thay đổi lớn về định dạng mà không có thay đổi lớn về ngữ nghĩa.
SilverbackNet

3

Công cụ Pretty Diff được tạo ra dựa trên XML. Chỉ cần đảm bảo bạn nhấp vào tùy chọn cho "đánh dấu".

http://prettydiff.com/


Nhưng đó là công cụ trực tuyến, phải không? Làm cách nào để áp dụng các thay đổi từ trái sang phải hoặc hợp nhất?
dma_k

Bạn cũng cần phải thay đổi các tùy chọn để sắp xếp, nếu không nó sẽ gắn cờ các phần tử XML là đã thay đổi khi tất cả những gì chúng đã làm được di chuyển (thứ tự không quan trọng trong XML nên điều này sẽ không xuất hiện dưới dạng thay đổi). Mặc dù vậy, nó vẫn không sắp xếp các phần lồng nhau dựa trên nội dung của chúng, vì vậy bạn vẫn sẽ thấy các phần bổ sung và loại bỏ các khối XML lớn khi tất cả những gì đã xảy ra là thứ tự các phần tử thay đổi, vì vậy không thể có được sự khác biệt chi tiết.
Malvineous




0

Tôi khuyên bạn nên sử dụng công cụ CodeCompare . Nó hỗ trợ đánh dấu gốc của dữ liệu XML và nó có thể là một giải pháp tốt cho nhiệm vụ của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.