Acerca de XML Diff & Patch

Obtuve el ejemplo de MSDN sobre cómo comparar dos XML con XML Diff y Patch. Ruta y diferencia XML de MSDN

Es un ejemplo fácil, pero no obtengo lo que esperaba.

Tengo los siguientes XML:

<a>
<component>A</component>
<component>4</component>
</a>

y

<a>
<component>A</component>
<component>5</component>
</a>

Al ejecutar el código de la herramienta, no obtengo exactamente la diferencia. La salida que obtengo es:

<a>
<component>A</component>
<component>5</component>
</a>

Pero para mis propósitos, me gustaría obtener solo la diferencia que difiere del original, en este caso.

<a>
<component>4</component>
</a>

¿Alguien sabe cómo puedo adaptar el código a mi solución?

Muchas gracias.

editar código utilizado:

  • (Aquí descubro las diferencias entre los archivos)

    public void GenerateDiffGram(string originalFile, string finalFile, 
                                XmlWriter diffGramWriter)
    {
        XmlDiff xmldiff = new XmlDiff(XmlDiffOptions.IgnoreChildOrder | 
                                     XmlDiffOptions.IgnoreNamespaces | 
                                     XmlDiffOptions.IgnorePrefixes);
       bool bIdentical = xmldiff.Compare(originalFile, newFile, false, diffgramWriter);
       diffgramWriter.Close();
    }
    
  • Parchar el archivo original para crear el nuevo archivo modificado.

    public void PatchUp(string originalFile, String diffGramFile, String OutputFile)
    {
    XmlDocument sourceDoc = new XmlDocument(new NameTable());
    sourceDoc.Load(originalFile);
    XmlTextReader diffgramReader = new XmlTextReader(diffGramFile);
    
    xmlpatch.Patch(sourceDoc,diffgramReader);
    
    XmlTextWriter output = new XmlTextWriter(OutputFile,Encoding.Unicode);
    sourceDoc.Save(output);
    output.Close();
    }
    

preguntado el 22 de mayo de 12 a las 15:05

Entonces, ¿por qué no publicas el código que estás usando? No tengo ganas de leer todo el artículo... -

Lo edité, obtuve el código del enlace msdn. -

¿Por qué no usas LINQ para comparar...? Si desea probar XML to LINQ, consulte deepumi.wordpress.com/2010/03/02/… -

Acabo de notar que la herramienta que quieres usar es de la Edad de Piedra (2002). ¿Todavía es compatible? Definitivamente deberías usar algo como Linq, como sugirió @Deepu. -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.