Могу ли я использовать jsoup, чтобы определить, заключен ли атрибут HTML в одинарные или двойные кавычки (или нет)?
Я использую jsoup для анализа HTML-документов и их анализа.
После анализа можно ли определить, был ли данный атрибут заключен в двойные, одинарные или без кавычек?
Другими словами, есть ли способ, которым я мог бы выделить следующее:
Document foo = Jsoup.parse("<html><body><a name=\"value\"></body></html>");
Document bar = Jsoup.parse("<html><body><a name='value'></body></html>");
Document baz = Jsoup.parse("<html><body><a name=value></body></html>");
В идеале, Attribute
будет иметь логическое значение isDoubleQuoted()
, isSingleQuoted()
, а также isUnquoted()
, или похожие.
Похоже, что Jsoup просто отбрасывает эту информацию во время анализа, что довольно печально, потому что мне нужно знать для анализа.
Но может я что-то упустил?:)
Обратите внимание, что я не могу просто использовать регулярное выражение в исходной строке. Документы, которые я анализирую, могут быть произвольно сложными, и любой заданный атрибут (т. Е. Пара ключ / значение) может появляться в документе более одного раза. Таким образом, просто не сработает просто "grep" для отображения ключ / значение (например, посмотрите, содержит ли строка, которую я анализирую с jsoup, name=value
или же name='value'
или же name="value"
) выяснить (хотя это приближение, которое, хотя и неудовлетворительно, мне, вероятно, придется жить, пока не найдется лучшее решение).
1 ответ
На всякий случай, если кому-то интересно: я внимательно посмотрел на jsoup и подтвердил, что информация о том, как было указано значение какого-либо конкретного атрибута, отбрасывается во время синтаксического анализа. Конечно, он (обязательно) доступен во время синтаксического анализа, но в основном он отбрасывается и не сохраняется в результирующем дереве DOM.
Я создал запрос на извлечение, чтобы добавить эту недостающую функциональность в jsoup: https://github.com/jhy/jsoup/pull/1114.
Не уверен, насколько хороши шансы получить пиар в jsoup. В настоящее время в проекте имеется 40 ожидающих запросов (включая мой), самый старый из которых относится к осени 2011 года (семь лет назад). С другой стороны, некоторые PR быстро объединяются. Последнее объединение PR датируется примерно 2 месяцами назад, и этот PR был объединен всего через несколько дней после его подачи. Посмотрим. До тех пор, пока не появится стабильная версия jsoup с этой функциональностью, я могу хотя бы использовать свой собственный форк.