libxml xmlNodePtr в необработанную строку xml? - PullRequest
3 голосов
/ 22 ноября 2011

Учитывая допустимый, произвольный xmlNodePtr, я хотел бы, чтобы строковое представление этого узла, включая тег, атрибуты и дочерние элементы в одной и той же форме (рекурсивно).

FWIW, мой сценарий я используюPerformXPathQuery для получения блока данных из существующего документа.Мне нужно получить результаты запроса, в который вложены элементы XML, в виде необработанной строки, чтобы я мог вставить ее в текстовое поле.

Это кажется простой задачей, однако я не могу найтилегкий способЗапись xmlDocPtr в файл должна сделать это, однако я не вижу удобного метода, который будет делать то же самое с произвольным узлом в дереве и возвращать его в памяти.

Надеюсь, я просто ослепиз цветовой схемы коричневой документации на xmlsoft.org

Ответы [ 3 ]

6 голосов
/ 23 ноября 2011

Это xmlNodeDump (или xmlNodeDumpOutput ), что вы ищете?

5 голосов
/ 24 июля 2013

Мой код, который я использовал для вывода узла в строку.Это объективно-c, поэтому просто измените ваш вывод по необходимости.

xmlBufferPtr buffer = xmlBufferCreate();
int size = xmlNodeDump(buffer, myXMLDoc, myXMLNode, 0, 1);

NSLog(@"%d", size);
NSLog(@"%s", buffer->content);

Не забудьте снова освободить ваш буфер.

1 голос
/ 22 ноября 2011

Один из способов, которым вы могли бы это сделать, - создать новый документ, а затем использовать xmlDocCopyNode, чтобы скопировать в него узел и сериализовать его.

...