Предложения, на как сборка инструмент HTML Diff?

Проблема связана с функцией Instant Run. Перейти к «Файл -> Настройки -> Сборка, выполнение, развертывание -> Мгновенный запуск» и просто отключить его.

Надеюсь, что это работает, если выше ответы не работает ..

11
задан Community 23 May 2017 в 11:47
поделиться

16 ответов

Откройте каждую страницу в браузере и сохраните их как .htm файлы. Сравните два использования windiff.

-2
ответ дан 3 December 2019 в 11:21
поделиться

DOM является структурой данных - это - дерево.

2
ответ дан 3 December 2019 в 11:21
поделиться

Мое предложение является просто основным способом сделать его... Конечно, для занятия проблемой Вы упомянули, что дополнительные правила должны быть применены здесь... Который находится в Вашем случае, мы получили элемент отделения соответствия, и затем примените атрибуты/свойство, соответствующие правилам и что нет...

Честно говоря, существуют многие и сложные правила, которые должны быть применены для сравнения и не только простой элемент соответствия к другому элементу. Например, что происходит, если у Вас есть дубликаты. например, 1 элемент отделения на одной стороне и 2 элемента отделения с другой стороны. Как Вы собираетесь совпасть, каким элементам отделения соответствует вместе?

Существует много других сложных проблем, которые Вы найдете в слове сравнения. Я говорю базирующийся опыта (часть моего задания является к maitain моим текстовым механизмом сравнения компании).

0
ответ дан 3 December 2019 в 11:21
поделиться

Я не знаю инструмента, но я знаю, что существует простой способ сделать это:

  • Во-первых, используйте инструмент регулярного выражения для снятия изоляции со всего текста в файле HTML. Можно использовать это регулярное выражение для поиска текста (?<=^|>)[^><]+?(?=<|$) и замените их пустой строкой (""), т.е. удалите весь текст. После этого шага у Вас будут все теги разметки HTML. Существует много свободных инструментов регулярного выражения там.
  • Затем Вы повторяете первый шаг для исходного файла HTML.
  • Наконец, Вы используете различный инструмент для сравнения двух наборов разметок HTML. Это покажет то, что отсутствует между одним набором и другим.
0
ответ дан 3 December 2019 в 11:21
поделиться

Я думаю, что некоторые предложения выше не принимают во внимание, что существуют другие теги в HTML между двумя страницами, которые дословно отличались бы, но получающаяся разметка HTML функционально эквивалентна. Danimal перечисляет идентификаторы управления как пример.

Следующие две разметки functionlly идентичный, но обнаружились бы как отличающиеся при простом сравнении тегов:

<div id="ctl00_TopNavHome_DivHeader" class="header4">foo</div>
<div class="header4">foo</div>

Я собирался предложить, чтобы Danimal записали перевод HTML, который ищет HTML-тэги и преобразовывает оба документа в упрощенную версию и того, который опускает идентификационные теги и любые другие теги, которые Вы определяете как не важные. Это должно было бы, вероятно, быть происходящей работой, поскольку Вы игнорируете определенные атрибуты/теги и затем сталкиваетесь с новыми, которые Вы также хотите проигнорировать.

Однако мне нравится идея использовать XmlSchemaInterface, чтобы свести его к XML-схеме, затем использовать различный инструмент, который понимает правила XML.

1
ответ дан 3 December 2019 в 11:21
поделиться

Если бы я был к tacke этой проблемой, то я сделал бы это:

  1. Запланируйте некоторый DOM для страниц HTML. запускается в легком весе, и затем добавьте более по мере необходимости. Я использовал бы составной шаблон для структуры данных. т.е. каждый элемент имеет дочерний набор типа базового класса.
  2. Создайте синтаксический анализатор для парсинга страниц HTML.
  3. Используя синтаксический анализатор загружают элемент HTML в DOM.
  4. После страниц, загруженный до DOM, у Вас есть hierachical снимок Вашей структуры страниц HTML.
  5. Продолжайте выполнять итерации через каждый элемент с обеих сторон до конца DOM. Вы найдете разность в структуре при ударе несогласованного из типа элемента.

В Вашем примере у Вас было бы только объект элемента отделения загруженным на одной стороне, с другой стороны у Вас будет объект элемента отделения загруженным 1 дочерним элементом элемента абзаца типа. разожгите свой итератор, сначала Вы подойдете элемент отделения, второй итератор, Вы подойдете абзац ни с чем. У Вас есть свои структурные различия.

1
ответ дан 3 December 2019 в 11:21
поделиться

@Mike - это сравнило бы все, включая содержание страницы, которая не является, хотят исходный требуемый плакат.

Предположение, что у Вас есть доступ к DOM браузера (путем записи плагина Firefox/IE или безотносительно), я, вероятно, поместил бы все элементы HTML в дерево, затем сравнил бы эти два дерева. Если имя тега отличается, то узел отличается. Вы могли бы хотеть прекратить перечислять в определенный момент (Вы, вероятно, не заботитесь о промежутке, полужирном, курсивном, и т.д. - возможно, только волнуются об отделениях?), так как некоторые теги являются действительно содержанием, а не структурой, страницы.

1
ответ дан 3 December 2019 в 11:21
поделиться

Петляйте через следующий сценарий Perl, затем используйте разность-iw, чтобы сделать нечувствительное к регистру, различный игнорирующий пробел.

#! /usr/bin/perl -w

use strict;

undef $/;

my $html = <STDIN>;

while ($html =~ /\S/) {
  if ($html =~ s/^\s*<//) {
    $html =~ s/^(.*?)>// or die "malformed HTML";
    print "<$1>\n";
  } else {
    $html =~ s/^([^<]+)//;
    print "(text)\n";
  }
}
2
ответ дан 3 December 2019 в 11:21
поделиться

Это было превосходным запуском. Еще несколько разъяснений/комментариев:

  • Я, вероятно, не забочусь об идентификаторах, так как .NET исказит их
  • часть структуры будет в повторителе или другом таком управлении, таким образом, я мог бы закончить тем, что имел больше или меньше повторяющихся элементов

дальнейшее размышление: Я думаю, что хорошее начало должно было бы предположить, что HTML XHTML совместимый. Я мог затем вывести схему (использующий новые методы .net XmlSchemaInference), затем разность схемы. Я могу затем посмотреть на различия и рассмотреть, являются ли они значительными.

0
ответ дан 3 December 2019 в 11:21
поделиться

См. http://www.semdesigns.com/Products/SmartDifferencer/index.html для получения информации об инструменте, параметризованном языковой грамматикой и создающем дельты в терминах языковых элементов (идентификаторов, выражений, операторов, блоков, методов и т. д.), вставленных, удаленных, перемещенных, замененных или содержащих идентификаторы, последовательно подставленные в них. Этот инструмент игнорирует переформатирование пробелов (например, различные разрывы строк или макеты) и семантически неразличимые значения (например, он знает, что 0x0F и 15 - это одно и то же значение). или в нем последовательно подставлены идентификаторы. Этот инструмент игнорирует переформатирование пробелов (например, различные разрывы строк или макеты) и семантически неразличимые значения (например, он знает, что 0x0F и 15 - это одно и то же значение). или в нем последовательно подставлены идентификаторы. Этот инструмент игнорирует переформатирование пробелов (например, различные разрывы строк или макеты) и семантически неразличимые значения (например, он знает, что 0x0F и 15 - это одно и то же значение). Это можно применить к HTML с помощью парсера HTML.

РЕДАКТИРОВАТЬ: 9/12/2009. Мы создали экспериментальный инструмент SmartDiff с помощью редактора HTML.

1
ответ дан 3 December 2019 в 11:21
поделиться

Если бы я сделал это, сначала я бы выучить HTML.

-1
ответ дан 3 December 2019 в 11:21
поделиться

Взгляните на несравненное. В нем есть функция сравнения XML, которая может вам помочь.

0
ответ дан 3 December 2019 в 11:21
поделиться

Вам также может потребоваться учесть, что сам «контент» может содержат дополнительную разметку, поэтому, вероятно, стоит удалить все в определенных элементах (например,

с определенными идентификаторами или классами), прежде чем проводить сравнение. Например:

<div id="mainContent">
<p>lorem ipsum etc..</p>
</div>

и

<div id="mainContent">
<p>Here is some real content<img class="someImage" src="someImage.jpg" /></p>
<ul>
<li>and</li>
<li>some</li>
<li>more..</li>
</ul>
</div>
0
ответ дан 3 December 2019 в 11:21
поделиться

Я бы использовал (или внес бы свой вклад) html5lib и его выход SAX. Просто пролистайте 2 потока SAX в поисках несоответствий и выделите все соответствующее поддерево.

0
ответ дан 3 December 2019 в 11:21
поделиться

http://www.mugo.ca/Products/Dom-Diff

Работает с FF 3.5. Я еще не тестировал FF 3.6.

1
ответ дан 3 December 2019 в 11:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: