рекомендации для анализатора / редактора HTML Java - PullRequest
2 голосов
/ 02 апреля 2009

Я столкнулся с проблемой после проблемы, пытаясь использовать сторонний редактор HTML, чтобы сделать то, что (я надеялся) было простой операцией. Из-за этих проблем я ищу рекомендации для альтернативного анализатора HTML, который я мог бы использовать для выполнения операций.

Вот моя ситуация, у меня есть теги span в моем html (с атрибутом ID для их идентификации), и я просто хочу заменить их содержимое на основе обновления в другой области моего клиента. Например:

<html>
    <body>
        <p>Hello <span id="1">name</span> you are <span id="2">age</span></p>
    </body>
</html>

Я пытался использовать класс HTMLDocument в javax.swing.text так:

Element e;
e = doc.getElement(document.getDefaultRootElement(), Attribute.ID, "1");
document.setInnerHTML(element, "John");
e = doc.getElement(document.getDefaultRootElement(), Attribute.ID, "2");
document.setInnerHTML(element, "99");

но возвращаемый элемент является листовым элементом и не позволяет устанавливать innerHTML. К сожалению, документ, читатель и анализатор предоставлены сторонней организацией, поэтому я не могу изменить его.

Итак, я надеялся, что у кого-то еще возникла подобная проблема, и он мог бы порекомендовать для этого альтернативную библиотеку?

Заранее спасибо, Б.

Ответы [ 5 ]

2 голосов
/ 02 апреля 2009

Неужели вы не можете сделать это с помощью java.swing.text.HTMLDocument?

Я никогда не пробовал этого, но читал через API что-то вроде

document.replace(e.getStartOffset(), e.getEndOffset()-e.getStartOffset(), "John", null)

вместо использования setInnerHtml () может работать.

0 голосов
/ 30 июня 2009

Я использовал JTidy очень успешно. Он принимает HTML, удаляет дерьмо, поэтому у вас есть правильный объект DOM, а затем просто используйте XPath для изменения ваших целей.

0 голосов
/ 02 апреля 2009

HTMLParser - отличная библиотека, но LGPL, которая может не подойти для некоторых коммерческих проектов.

Если ваш html правильно сформирован, вы можете использовать Dom4J для обхода узлов, а в случае, если ваш HTML плохо сформирован, вы можете использовать Tidy в сочетании с Dom4J

0 голосов
/ 02 апреля 2009

У меня удача в моем текущем проекте с TagSoup .

0 голосов
/ 02 апреля 2009

Вы пробовали HTML Parser ? Это надежная библиотека для разбора HTML с открытым исходным кодом для Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...