Мне нужно проанализировать реальные HTML-документы. В большинстве случаев они хорошо сформированы, но иногда (и это нельзя игнорировать) они выглядят как фрагменты, имеющие более одного родного брата на корневом уровне.
Пример:
<div>one</div>
<div>two</div>
Теперь я использую libxml2 v2.7.8 со следующими флагами разбора:
HTML_PARSE_NOERROR | HTML_PARSE_RECOVER | HTML_PARSE_NODEFDTD | HTML_PARSE_NOIMPLIED
Если я добавлю его в приведенном выше примере, а затем дампа HTML из разобранного документа:
<div>one<div>two</div></div>
Как видите, элементы вложены, а мои требования не нарушать HTML. Также я хотел бы иметь возможность запускать выражения XPath на деревьях, созданных из таких фрагментов. В этом случае, чтобы добраться до второго DIV, нужно использовать '/div[2]'.
Итак, вопрос в том, возможно ли анализировать эти виды HTML и как?