У меня есть много файлов HTML. Я хочу заменить некоторые элементы, оставив все остальное без изменений. Например, я хотел бы выполнить это выражение jQuery (или его эквивалент):
$('.header .title').text('my new content')
в следующем документе HTML:
<div class=header><span class=title>Foo</span></div>
<p>1<p>2
<table><tr><td>1</td></tr></table>
и имеют следующий результат:
<div class=header><span class=title>my new content</span></div>
<p>1<p>2
<table><tr><td>1</td></tr></table>
Проблема заключается в том, что все синтаксические анализаторы Ive пытались (Nokogiri, BeautifulSoup, html5lib) сериализуйте его примерно так:
<html>
<head></head>
<body>
<div class=header><span class=title>my new content</span></div>
<p>1</p><p>2</p>
<table><tbody><tr><td>1</td></tr></tbody></table>
</body>
</html>
например. они добавляют:
- html, элементы головы и тела
- закрытие p-тегов
- TBODY
Есть ли синтаксический анализатор, который удовлетворяет мои потребности? Он должен работать в Node.js, Ruby или Python.