Нахождение разницы между двумя файлами XML - PullRequest
3 голосов
/ 05 сентября 2010

Я построил два XML-файла, которые отображают содержимое данной папки:

<root>
    <folder name="C:\a\b" permision="yes" folderCount="1">
        <folders>
            <folder name="C:\a\b\c" permision="yes" folderCount="1">
                <folders>
                    <folder name="C:\a\b\c\e" permision="yes" folderCount="0">
                <folders/>
                <files>
                    <file name="401-1.htm"/>
                    <file name="401-2.htm"/>
                    <file name="401-3.htm"/>                              
                </files>
            </folder>
            <folder name="C:\a\b\d" permision="yes" folderCount="0">
                <folders/>
                <files>
                    <file name="401-4.htm"/>
                    <file name="401-5.htm"/>
                    <file name="401-3.htm"/>                                
                </files>
            </folder>
        </folders>
        <files/>
    </folder>
</root>

Я хотел бы знать, есть ли способ найти разницу между файлами.

(Один файл - это старое состояние, а второй - новое состояние, и можно только добавлять файлы, но не удалять их. Было бы здорово удалить идентичные узлы из нового состояния, чтобы остались только новые файлы ).

Ответы [ 2 ]

3 голосов
/ 05 сентября 2010

Я бы использовал LINQ to XML, как в проекте ниже:

Различаться в файлах XML с LINQ:
http://www.codeproject.com/KB/linq/LinqDiff.aspx

1 голос
/ 05 сентября 2010

Если вы хотите сделать это в коде, вы можете использовать Microsoft'ss XML Diff and Patch GUI Tool , и хотя документации не так много, достаточно, чтобы выдолжен иметь возможность легко различать два XML-файла в коде за довольно короткий промежуток времени.Я использую его в нескольких проектах в рамках серии модульных тестов, которые гарантируют, что файлы XML генерируются правильно.

Если вы просто хотите просмотреть различия между этими двумя файлами, то вы можете просто использоватьлюбой приличный инструмент сравнения.

...