libxml2 cant get Inhalt von Knoten
Ich bin mit libxml in C und dies ist, wie erstelle ich xml:
xmlDocPtr createXmlSegment(char *headerContent, char *dataContent)
{
xmlDocPtr doc;
doc = xmlNewDoc(BAD_CAST "1.0");
xmlNodePtr rdt, header, data;
rdt = xmlNewNode(NULL, BAD_CAST "rdt-segment");
xmlSetProp(rdt, "id", "1");
header = xmlNewNode(NULL,BAD_CAST "header");
data = xmlNewNode(NULL, BAD_CAST "data");
xmlNodeSetContent(header, BAD_CAST headerContent);
xmlNodeSetContent(data, BAD_CAST dataContent);
xmlAddChild(rdt, header);
xmlAddChild(rdt, data);
xmlDocSetRootElement(doc, rdt);
return doc;
}
und so möchte ich die Daten aus dieser xml:
int getDataFromXmlSegment(char *data, char *header, char *content)
{
xmlDocPtr doc = xmlReadMemory(data, strlen(data), NULL, NULL, XML_PARSE_NOBLANKS);
xmlNode *rdt = doc->children;
xmlNode *headerNode = rdt->children;
header = (char *)headerNode->content;
content = (char *)headerNode->next->content;
printf("header: %s, content: %s", header, content);
return EXIT_SUCCESS;
}
Wenn ich testen headerNode->name-oder ->weiter->Namen, dann die Namen richtig sind (Ihren Namen, die Elemente), aber der Inhalt den Wert null zurück. Wer weiß, wo ist das problem?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurze Antwort: verwenden Sie xmlNodeGetContent.
Element-Knoten selbst keine Inhalte enthalten. Stattdessen haben Sie Kinder, text-Knoten, und solche Inhalte enthalten. Der Inhalt eines Elements kann eine Mischung aus text und tags, und dies ermöglicht es, um die Anordnung, stellen Personen, etc.
Konnte man Durchlaufen der child-Knoten und betrachten Sie DEREN Inhalte, die Mitglieder, aber xmlNodeGetContent bedeutet das für Sie, und mit Kind-tags und-Entitäten richtig.