libxml2 парсинг HTML - PullRequest
       14

libxml2 парсинг HTML

6 голосов
/ 23 августа 2010

Я анализирую HTML с помощью libxml2, использую XPath для поиска элементов. Как только я нашел искомый элемент, как я могу получить HTML в виде строки из этого элемента (имея в виду, что у этого элемента будет много дочерних элементов). Дан документ:

<html>
    <header>
        <title>Some document</title>
    </header

    <body>
        <p id="faq">
            Some kind of text <a href="http://www.nowhere.com/">here</a>.
        </p>
    </body>
</html>

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

<body>
    <p id="faq">
        Some kind of text <a href="http://www.nowhere.com/">here</a>.
    </p>
</body>

Как я могу это сделать?

1 Ответ

6 голосов
/ 23 августа 2010

Это цель xmlNodeDump:

РЕДАКТИРОВАТЬ:

Если у вас есть xmlNodePtr node, сделайте что-то вроде:

xmlBufferPtr nodeBuffer = xmlBufferCreate();
xmlNodeDump(nodeBuffer, doc, node, 0, 1);
// ... Do something with nodeBuffer->content
// When done:
xmlBufferFree(nodeBuffer);

Четвертый и пятый параметры управляют отступом и форматированием.

...