MS XmlDiffPatch toolを使用して2つのシリアル化されたオブジェクトのxmlを比較します。 (C#)とXML差分を解析して差分のみを表示する方法
XMLサンプル1:
<HotelBookingView xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Id>119</Id>
<RoomId>1</RoomId>
<NumberNights>4</NumberNights>
<CourseBookings>
<CourseHotelLink>
<Id>0</Id>
</CourseHotelLink>
</CourseBookings>
</HotelBookingView>
XMLサンプル2:それらの間
<HotelBookingView xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Id>119</Id>
<RoomId>1</RoomId>
<NumberNights>5</NumberNights>
<CourseBookings>
<CourseHotelLink>
<Id>0</Id>
</CourseHotelLink>
</CourseBookings>
</HotelBookingView>
(NumberNightsが4から5に変化した)
差分:
<?xml version="1.0" encoding="utf-8" ?>
<xd:xmldiff version="1.0" srcDocHash="14315823970661993399" options="IgnoreChildOrder" fragments="no" xmlns:xd="http://schemas.microsoft.com/xmltools/2002/xmldiff">
<xd:node match="1">
<xd:node match="3">
<xd:change match="1">5</xd:change>
</xd:node>
</xd:node>
diffを処理して2つの違いだけを表示できるようにアドバイスしますか?
私はちょうど NumberNightsを示し、最終的なディスプレイたい:XML差分ツールがGetHtml()関数を持っていますが、それはすべての値を表示し、ちょうどハイライト(5)
、(4)新しい値をOLDVALUEを変更されたもの現在のところ、私はCSSの 'lightgreen'のために生成されたhtmlを見て、次にノードの名前を見つけるために文字列操作を行います。これは非常に面倒で、監査データがいっぱいのテーブルにとっては本当に遅いです!より良いアイデアが評価されました!
これははるかに有用な出力のように見えます! – UglyTeapot
xmldiffの問題は大きな入力では役に立たないということです(2つの2mbのXMLファイルを比較すると、8GBのRAMを持つ私のクアッドコアXeonを強制終了しますが、わずかな違いしかありません)。 )。 –