มีเครื่องมือ Diff / Merge Xml ฟรีหรือไม่? [ปิด]


105

ฉันมีไฟล์กำหนดค่าหลายไฟล์ในแอปพลิเคชัน. net ของฉันซึ่งฉันต้องการรวมองค์ประกอบการตั้งค่าแอปพลิเคชันเป็นต้น

ฉันกำลังจะเริ่มทำด้วยตนเองตามปกติ แต่คิดว่าต้องมีเครื่องมือ XML diff GUI อยู่ที่ไหนสักแห่ง

เครื่องมือจะสามารถไปที่ระดับองค์ประกอบเพื่อเปรียบเทียบและแสดงความแตกต่างเป็นต้น

อย่างไรก็ตาม Google ไม่ได้ให้ผลลัพธ์ของเครื่องมือที่ไม่เสียค่าใช้จ่ายใด ๆ และไม่มีคำแนะนำสำหรับสิ่งที่มีค่า

มีเครื่องมือดังกล่าวหรือไม่ ที่มีประโยชน์มาก? ฟรี?

ขอบคุณล่วงหน้า. :)

แก้ไข:

นี่คือคำอธิบายเล็กน้อยเกี่ยวกับฟังก์ชันการทำงานที่จะเปลี่ยนงานที่ต้องทำด้วยตนเองที่น่าเบื่อและเกิดข้อผิดพลาดให้กลายเป็นงานที่ง่ายกว่าใน 1 นาที (และอาจทำให้เป็นอัตโนมัติ):

ใน KDiff3 คุณสามารถทำการแตกต่าง / รวมไดเร็กทอรีทั้งหมดได้ มีความแตกต่างตามลำดับชั้นซึ่งแม่นยำมากใช้งานง่ายและชัดเจน ฉันสนใจที่จะค้นหาโซลูชันที่คล้ายกัน แต่แทนที่จะเป็นลำดับชั้นของไดเร็กทอรีซึ่งเป็นลำดับชั้นขององค์ประกอบ XML

หากไม่มีซอฟต์แวร์โอเพ่นซอร์สดังกล่าวฉันกำลังพิจารณาสร้างซอฟต์แวร์บน CodePlex เพื่อให้ฟังก์ชันนี้

คำตอบ:


11

KDiff3ไม่ใช่ XML เฉพาะ แต่เป็นบริการฟรี มันเป็นงานที่ดีในการเปรียบเทียบและรวมไฟล์ข้อความ


3
ฉันยอมรับว่าฉันกำลังใช้ KDiff3 ในขณะนี้อย่างไรก็ตามเครื่องมือเฉพาะสำหรับ XML ที่สามารถลงไปถึงระดับองค์ประกอบจะยอดเยี่ยมมาก
Russell

2
ฉันคิดจากมุมมองนี้: วิธีที่ KDiff สร้างความแตกต่างของไดเร็กทอรีตามลำดับชั้นความแตกต่างขององค์ประกอบตามลำดับชั้นก็สามารถใช้ได้เช่นกัน ดังนั้นหากองค์ประกอบมีการเปลี่ยนแปลงแสดงว่าฉันยอมรับองค์ประกอบหลักควรถูกตั้งค่าสถานะว่ามีการเปลี่ยนแปลง
Russell

26
ทุกคนตระหนักดีว่าใน xml โหนดลูกไม่ได้รับการรับรองว่าจะอยู่ในลำดับที่เฉพาะเจาะจงดังนั้น "เครื่องมือ" ใด ๆ ที่รายงานว่ามีบางอย่างไม่อยู่ในลำดับเดียวกันจากไฟล์หนึ่งไปยังอีกไฟล์หนึ่งจะไม่ใช่เครื่องมือที่สอดคล้องกับ xml จริง

7
หากคำสั่งเปลี่ยนองค์ประกอบจะแตกต่างกัน ขึ้นอยู่กับความหมายของเอกสาร XML ที่เป็นปัญหาลำดับอาจมีนัยสำคัญหรือไม่ก็ได้ เช่นใน XHTML เห็นได้ชัดว่าลำดับมีความสำคัญ
George Lund

7
ประเด็นก็คือเครื่องมือ diff ปกติทำงานตามบรรทัด มีเครื่องมือแตกต่างเฉพาะเช่นไฟล์ CSV ที่เข้าใจรูปแบบที่แตกต่างกัน ยิ่งเข้าใจดีเท่าไหร่ความแตกต่างก็จะเกิดขึ้นได้อย่างมีประสิทธิภาพ เครื่องมือ XML diff ที่ดีจะสามารถแยกวิเคราะห์ XML ใช้สคีมาเพื่อกำหนดข้อ จำกัด เช่นว่าคำสั่งมีความสำคัญหรือไม่จากนั้นใช้ความรู้นั้นเพื่อมอบประสบการณ์ diff / merge ที่มีประสิทธิภาพมากขึ้น
Stijn de Witt

32

ได้ดูที่เครื่องมือการเปรียบเทียบไฟล์จากที่ผมกำลังใช้WinMerge มีความสามารถในการเปรียบเทียบเอกสาร XML (คุณอาจต้องการเปิดใช้งานตัวDisplayXMLFilesกรองล่วงหน้า)

DisplayXMLFiles.dll - ปลั๊กอินนี้พิมพ์ไฟล์ XML ได้อย่างสวยงามโดยการใส่แท็บและตัวแบ่งบรรทัด สิ่งนี้มีประโยชน์สำหรับไฟล์ XML ที่ไม่มีการส่งคืนบรรทัดในตำแหน่งที่สะดวก

WinMerge ในการดำเนินการ

ดูตารางเปรียบเทียบคุณสมบัติของฉันด้วย


6
+1 Winmerge เวอร์ชัน 2.12.4.0; เมนู "Plugin" -> "List" -> เลือก "Enable Plugins"; เมนู "Plugin" -> เลือก "Automatic unpacking" ทดสอบกับไฟล์ XML ที่มีชื่อไฟล์นามสกุล. xml แล้วดูเหมือนว่าจะใช้งานได้
Alessandro Jacopson

10
ไม่สามารถจัดการกับแอตทริบิวต์ที่อยู่ในคำสั่งซื้อที่แตกต่างกันได้ดังนั้นประโยชน์จึงอาจมี จำกัด ขึ้นอยู่กับสถานการณ์ของคุณ
Michael Kohne

ใช้การแปลงนี้กับไฟล์ XML ก่อนเพื่อจัดเรียงองค์ประกอบและแอตทริบิวต์: stackoverflow.com/questions/4091085/xslt-to-sort-nodes-by-name
LarryDavid

1
ดูเหมือนว่าปลั๊กอินจะไม่สามารถใช้งานได้อีกต่อไป
Fernando Gonzalez Sanchez

ฉันไม่แน่ใจว่าทำไมมันถึงไม่อยู่ในโปรแกรมติดตั้ง แต่ฉันสามารถรับได้จากการ repo src ของพวกเขาใน bitbucket / source code (sourceforge DL): bitbucket.org/winmerge/winmerge/src/…
aCodeMonkey

21

ฉันเขียนและเปิดตัวแอปพลิเคชัน Windows ที่แก้ปัญหาการเปรียบเทียบและรวมไฟล์ XML โดยเฉพาะ

โปรเจ็กต์: การผสานสามารถทำการเปรียบเทียบสองและสามทางและการรวมไฟล์ XML ใดก็ได้ (โดยที่ไฟล์สองไฟล์นั้นถือเป็นการแก้ไขไฟล์ฐานทั่วไปโดยอิสระ) คุณสามารถสั่งให้ระบุองค์ประกอบภายในไฟล์อินพุตตามค่าแอตทริบิวต์หรือเนื้อหาขององค์ประกอบย่อยเหนือสิ่งอื่นใด

สามารถควบคุมได้อย่างสมบูรณ์ผ่านทางบรรทัดคำสั่งและยังสามารถสร้างรายงานข้อความที่มีความแตกต่างระหว่างไฟล์

โครงการ: ผสานการรวมไฟล์ XML สามไฟล์


สวัสดี @ เจมส์ขอบคุณสำหรับข้อมูล เห็นได้ชัดว่ามันจะดีถ้ามันฟรี แต่มันมีฟังก์ชั่นที่ยอดเยี่ยมมาก - และตัวอย่างของคุณด้านบนเป็นแบบคลาสสิกว่าทำไมเครื่องมือนี้ถึงมีประโยชน์มาก! ขอบคุณสำหรับโพสต์ของคุณ :)
Russell

ฉันได้ลอง Project :: Merge แล้ว แต่น่าเสียดายที่ไม่สามารถรับมือกับงานของฉันได้ ฉันมีข้อความ HTML ในข้อย่อย ( <p>) ซึ่งจะมีการเพิ่มการจัดรูปแบบ (เช่น<i>, <em>) ดังนั้น Project :: Merge แสดงให้เห็นว่า para ที่สมบูรณ์ถูกเปลี่ยนมันไม่ได้ทำการวิเคราะห์คำในเชิงลึก
dma_k

ใช่ฉันขอโทษที่ต้องบอกว่า XHTML (จะไม่รองรับ HTML แบบเดิม) นั้นค่อนข้าง จำกัด ในแง่นั้นเช่นเดียวกับข้อความที่แตกต่างกันภายในบล็อก XML โดยทั่วไป จนถึงขณะนี้งานส่วนใหญ่มุ่งเน้นไปที่ไฟล์ XML รูปแบบการกำหนดค่าซึ่งข้อมูลอักขระรูปแบบอิสระถูก จำกัด ในขอบเขตและการใช้งาน หวังว่าฉันจะปรับปรุง Project: ผสานในพื้นที่นี้ในรุ่นต่อ ๆ ไป

2
-1, OP ถามเกี่ยวกับซอฟต์แวร์ฟรี Project Merge เป็นเวอร์ชันทดลองใช้และยังไม่ได้รับการอัปเดตภายใน 3 ปี
yourbuddypal

3
โครงการ: ตอนนี้การผสานถูกแทนที่ด้วย Oso XML Merge: osocorporation.com/xmlmerge/index.php
leetNightshade

15

มีเครื่องมือแตกต่างและผสาน XML ที่ใช้ Java สองสามรายการที่นี่:

Open Source XML Diff เขียนด้วย Java

เพิ่มลิงค์:


2
ฉันมีปัญหาในการค้นหาลิงก์ไปยังซอฟต์แวร์ในลิงก์ที่คุณกล่าวถึง
Russell

ใช่ฉันด้วย! อาจต้องใช้ Google สักหน่อย ...
Chris Fulstow

3

ฉันใช้ TortoiseMerge ซึ่งรวมอยู่ในโปรแกรมTortoiseSVN

และเราได้พูดคุยเกี่ยวกับเครื่องมือ File Diff ในชุดข้อความนี้ไม่ได้มีไว้สำหรับ XML

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


1
ขอบคุณ S.Mark ที่ฉันพูดถึง epotter ฉันใช้ KDiff3 สำหรับไฟล์ทั่วไปแล้วอย่างไรก็ตามฉันต้องการยูทิลิตี้ diff เฉพาะ XML หากมีให้ใช้งาน (ถ้าไม่มีฉันจะเริ่มต้นโอเพนซอร์ส :))
Russell

>> (if not, I will start up an open-source one :)ว้าวสุดยอด! หวังว่าจะได้โปรดวางลิงค์ไว้ที่ใดที่หนึ่งที่นี่หากเริ่มต้น
คุณ

3

แม้ว่านี่จะไม่ใช่เครื่องมือ GUI แต่การทดสอบอย่างรวดเร็วของฉันระบุว่าdiffxmlมีสัญญาบางอย่าง ผู้เขียนดูเหมือนจะคิดถึงความซับซ้อนของการแสดงความแตกต่างสำหรับองค์ประกอบที่ซ้อนกันในรูปแบบมาตรฐาน (ข้อกำหนด DUL - Delta Update Language)

การติดตั้งและเรียกใช้เครื่องมือของเขาฉันสามารถพูดได้ว่าเอาต์พุตข้อความดิบนั้นค่อนข้างชัดเจนและรัดกุม มันไม่ได้มีระดับความหวาดกลัวในทันทีเหมือนกับเครื่องมือ GUI แต่เนื่องจากผลลัพธ์นั้นเป็นมาตรฐาน DUL บางทีคุณอาจจะสามารถใช้สิ่งนั้นและสร้างเครื่องมือเพื่อสร้างการแสดงภาพได้ ฉันชอบที่จะเห็นอย่างแน่นอน

ส่วน "ลิงก์" ของผู้เขียนอ้างอิงเครื่องมือสร้างความแตกต่างของ XML อื่น ๆ อีกสองสามอย่าง แต่ตามที่คุณกล่าวไว้ในโพสต์ของคุณทั้งหมดเป็นกรรมสิทธิ์


4
ประสบการณ์ของฉันคือ: มันไม่สามารถจัดการการเรียงลำดับองค์ประกอบใหม่ได้เลยซึ่งเป็นสิ่งที่คาดหวังในเครื่องมือ XML (เป็นตัวเลือกเพราะบางครั้งลำดับมีความสำคัญ) และแทนที่จะแสดงความแตกต่างเพียงเล็กน้อยจะแสดงองค์ประกอบที่เปลี่ยนแปลงทั้งหมด . โดยทั่วไปไฟล์ diff เป็นเพียงไฟล์ XML ใหม่ทั้งหมดหากมีการเปลี่ยนแปลงการจัดรูปแบบที่สำคัญโดยไม่มีการเปลี่ยนแปลงความหมายขนาดใหญ่
SilverbackNet

3

เครื่องมือ Pretty Diff ถูกสร้างขึ้นโดยคำนึงถึง XML เพียงให้แน่ใจว่าคุณคลิกตัวเลือกสำหรับ "มาร์กอัป"

http://prettydiff.com/


แต่นั่นคือเครื่องมือออนไลน์ใช่มั้ย? ฉันจะใช้การเปลี่ยนแปลงจากซ้ายไปขวาหรือรวมได้อย่างไร
dma_k

คุณต้องเปลี่ยนตัวเลือกสำหรับการเรียงลำดับมิฉะนั้นจะตั้งค่าสถานะองค์ประกอบ XML ตามที่เปลี่ยนแปลงเมื่อสิ่งที่ทำทั้งหมดถูกย้าย (ลำดับไม่สำคัญใน XML ดังนั้นจึงไม่ควรปรากฏเป็นการเปลี่ยนแปลง) แม้ว่าจะยังไม่เรียงลำดับส่วนที่ซ้อนกันตามเนื้อหาดังนั้นคุณจะยังคงเห็นการเพิ่มเติมและการลบบล็อก XML ขนาดใหญ่เมื่อสิ่งที่เกิดขึ้นคือองค์ประกอบเปลี่ยนลำดับดังนั้นจึงไม่สามารถรับความแตกต่างแบบละเอียดได้
Malvineous




0

ฉันแนะนำให้คุณใช้เครื่องมือCodeCompare สนับสนุนการเน้นข้อมูล XML แบบเนทีฟและอาจเป็นทางออกที่ดีสำหรับงานของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.