ความแตกต่างของ XML ที่ทนต่อความยาวบรรทัด


13

ฉันได้ดูคำตอบสำหรับคำถามนี้และโชคไม่ดีที่พวกเขาไม่ได้ช่วยฉัน

เพื่อไม่ให้กระทบกับบุชตอนนี้ C # รุ่นที่สองในความลึกตอนนี้อยู่ในการแก้ไขสำเนา ฉันต้องการเห็นสิ่งที่ตัวแก้ไขการคัดลอกทำได้ง่ายจริง ๆ ดังนั้นฉันสามารถปฏิเสธหรือยอมรับการเปลี่ยนแปลงของเขาได้

เรากำลังใช้ docbook ในรูปแบบที่แก้ไข แต่ฉันดีใจที่ได้ดูแหล่งข้อมูล XML ดิบ ทั้งหมดนี้ดี - ยกเว้นว่าเมื่อตัวแก้ไขการคัดลอกทำการเปลี่ยนแปลงที่สามารถเปลี่ยนการตัดบรรทัด ดังนั้นสิ่งที่เคยอ่าน:

<para>Foo bar baz
 second line</para>

ตอนนี้อ่าน

<para>Foo bar grontle
 baz second line</para>

ตอนนี้การเปลี่ยนแปลงที่แท้จริงที่นี่คือการแทรก "grontle" ฉันไม่สนใจว่า "baz" ได้ย้ายจากบรรทัดแรกไปยังบรรทัดที่สอง แต่เครื่องมือต่าง ๆ ทั้งหมดที่ฉันเคยเห็นทำ

ฉันรู้ว่ามีตัวเลือกหนึ่งที่จะจัดรูปแบบเอกสารทั้งหมด (หรืออาจเป็นเพียงแค่ย่อหน้าทั้งหมด) เป็นบรรทัดเดียว ... แต่นั่นก็ยากที่จะอ่านจริงๆเพราะเครื่องมือ diff ไม่ห่อเมื่อแสดง

ฉันแน่ใจว่าฉันสามารถจัดการกับเครื่องมือที่ฉันมี แต่ถ้าใครรู้อะไรที่ดีกว่าฉันจะดีใจจริงๆที่ได้ยินเกี่ยวกับมัน ฉันสงสัยว่าผู้เผยแพร่ของฉันก็จะทำเช่นกัน

(ฉันรวมแท็ก Windows ไว้ที่นี่เพราะฉันต้องการให้มีอยู่ใน Windows จริงๆฉันอยากจะได้ยินเกี่ยวกับซอฟต์แวร์ที่ไม่ใช่ Windows ด้วย แต่ในกรณีที่ฉันสามารถช่วยสร้างมันบน Windows ได้

คำตอบ:


9

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

ดูตัวอย่างด้านล่างสำหรับ diff ที่คุณอธิบาย

diff ง่าย


1
ฉันเพิ่งได้ดูไฟล์จริงอย่างรวดเร็วและดูเหมือนว่าจะทำงานได้อย่างสมบูรณ์แบบ ขอบคุณดังนั้นมาก!
Jon Skeet

4

วิธีการแก้ปัญหาของฉันคือมีเกินเปรียบเทียบ (เครื่องมือที่มีประสิทธิภาพมากขึ้น)

ดังนั้นเราเริ่มต้นด้วยการเห็นปัญหา

ป้อนคำอธิบายรูปภาพที่นี่

BC มีบทบาทการแยกวิเคราะห์ XML พิเศษ: (มีบทบาท XML อยู่แล้ว แต่ไม่ใช่กับการวิเคราะห์ล่วงหน้า - ซึ่งจัดเรียงและเรียงลำดับ )

ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นเราจึงไปที่http://www.scootersoftware.com/download.php?zz=kb_moreformats_alt

ป้อนคำอธิบายรูปภาพที่นี่

และตอนนี้ -

ป้อนคำอธิบายรูปภาพที่นี่

หวังว่าคุณจะใช้มันสำหรับ C # รุ่นต่อไป

ป.ล. ถ้าข้อความในภาพมีขนาดเล็กเกินไปเพียงคลิกที่ภาพเพื่อโหลดต้นฉบับ


Btw " Namir.78 " หมายถึงอะไร
Pacerier

1

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

http://xmldifftool.com/download_en.html

มีการแนะนำสั้น ๆ ที่นี่:

http://xmldifftool.com/xtcmanual_en.html


0

ฉันมีปัญหาเดียวกันนี้ที่ บริษัท เมื่อไม่นานมานี้ พวกเขาต้องการค้นหา "XML ที่แตกต่างกัน" อย่างแท้จริงและดูเหมือนจะไม่มีคำตอบที่สมบูรณ์

ทางออกที่ง่ายที่สุดคือการใช้สคริปต์สวยพิมพ์บน XML แรกที่จะปกติสายปลายและระยะห่างและเรียกใช้เครื่องมือต่างของทางเลือก ( WinMergeเป็นสิ่งที่ดีสำหรับ Windows) สิ่งนี้จะลดจำนวนของ flotsam ที่ diffftools ส่วนใหญ่จะส่งมาให้คุณจาก XML และเป็นเรื่องง่ายมากที่จะสร้างสคริปต์


ปัญหาคือ XML นั้นถูกพิมพ์ออกมาสวยได้อย่างมีประสิทธิภาพ - มันคือการแทรกและการลบที่เปลี่ยนตำแหน่งที่บรรทัดถูกห่อ ฉันสงสัยว่าฉันต้องการบางสิ่งในการฟอร์แมตไฟล์หนึ่งไฟล์ตามคำที่เกิดขึ้นที่ส่วนท้ายของบรรทัดในอีกไฟล์ :(
Jon Skeet

0

SD Smart Differencerเปรียบเทียบเอกสารตามโครงสร้างซึ่งต่างกับเค้าโครงจริง

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


0

@ จอน Skeet: คุณพูดถึงคำถามของคุณว่าเครื่องมือต่าง ๆ ไม่ได้ห่อเมื่อแสดง
vimdiff(ยังมีอยู่ใน Windows ผ่านgvim) ช่วยให้คุณสามารถตัดไฟล์ XML :window set wrapแสดงด้วย การเชื่อมโยงการอ้างอิง
นอกจากนี้คุณสามารถเรียกใช้:diffupdateเพื่อรีเฟรช diffs

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