So fügen Sie eine xml-Knoten konstruiert, die von "string" in libxml2
Verwende ich Libxml2 für die Codierung der Daten in einer xml-Datei. Meine Daten enthalten, die tags wie "<" und ">". wenn es in xml konvertiert diese tags werden auch umgewandelt in "<" und ">". Gibt es eine Möglichkeit, dieses problem zu lösen. Ich will verwenden Sie diese tags als xml-Knoten, während Dekodierung, xml-Datei, also von CDATA ist nicht eine Lösung für dieses problem. Bitte geben Sie keine Lösung für dieses. Danke.
Beispiel-Code:
xmlNewChild(node, NULL, (xmlChar *)"ADDRESS", (xmlChar *)"<street>Park Street</street><city>kolkata</city>");
and output of above code is:
<person>
<ADDRESS><street>Park Street</street><city>Kolkata</city></ADDRESS>
- Sie sind das hinzufügen der xml-Knoten, die als text, so weit das Verhalten ist korrekt...
- ja, ich habe meine Daten, die mit tags auch. aber wenn Sie in das xml format konvertiert diese tags sind geändert, aber ich nicht wollen, dass. so gibt es eine Lösung dafür?
- Bitte geben Sie mir einige Richtung, ob es möglich ist in libxml2? Es ist sehr wichtig für mich. bitte helfen Sie.
- Parul, verbesserte ich meine Antwort, was nun werden sollte satifying. Bitte Bearbeiten Sie den Titel Ihrer Frage auf "Wie Sie einen Knoten konstruiert, die von "string", wenn Sie auch der Meinung, es wäre besser, beschreiben Sie das problem. Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, dass ein string als xml behandelt, dann sollten Sie analysieren und erhalten
xmlDoc
aus, mit xmlReadMemory. Es könnte sein, nutzbar für größere Zeichenfolgen, aber in der Regel das Dokument ist gebaut Verwendung von einfachen Schritt-Anleitungen, wie in joachims Antwort. Hier präsentiere ichxmlAddChildFromString
Funktion zu tun, die Sachen in einem string Weg.xmlNodeDump
funktioniert.xmlNodePtr addedNode = xmlAddChildList(parent, newNode->children);
niemand kenntnewNode
so wird es nicht freigegeben. Ich habe bearbeitet die Antwort so, dass es keine Speicherverluste.Zu nennen
xmlNewChild
in eine Kette, ein Anruf für den übergeordneten Knoten und einen Anruf für jeden sub-Knoten:Können Sie versuchen, eine Funktion xmlParseInNodeContext. Es ermöglicht Ihnen, zu analysieren XML-Rohdaten, die im Kontext von übergeordneten Knoten, und konstruiert einen Knoten befestigt werden kann, um das übergeordnete Element.
Beispiel:
Ich bin jetzt mit dem folgenden code zu injizieren XML-text (eventuell mit mehreren Elementen) in einem bestehenden Knoten (Dank an Nazar und nwellnhof für die eine Antwort und beziehe mich in meiner Frage (Die Injektion eines string in ein XML-Knoten ohne Inhalt Flucht) zu dieser):
Es nimmt einen string (str) fügt einem umgebenden element (< a >...< a/>), analysiert den string mit xmlParseInNodeContext und fügt dann die Kinder von dem neuen Knoten zu den Eltern. Es ist wichtig, die Kinder des neuen Knotens und nicht die neuen Knoten, um zu vermeiden, dass < a >...< a/> in der letzten XML.