2010-08-22 2 views
6

Я разбираю HTML с помощью libxml2, используя XPath для поиска элементов. Как только я нашел элемент, который я ищу, как я могу получить HTML как строку из этого элемента (имея в виду, что этот элемент будет содержать множество дочерних элементов). Получив документ:libxml2 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> 

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

ответ

6

То есть цель xmlNodeDump:

EDIT:

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

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

4-й и 5-й параметры управления отступов и форматирования.

+0

Отлично, спасибо! – johndoe