XML-Knoten Attributsvergabe
-
Hallo,
bin gerade dabei ein XML-File mit dem BCB6 zu erstellen.
Ich möchte nun dem Knoten plantkey das Attribut Description="Werksschlüssel" zuweisen.
Dabei erstellt er Description="true". Ich habe keine Ahnung wo ich noch gucken kann.
Bei den Attributen Datatype und Length ist es ähnlich.// Erstellen einer XML Datei TXMLDocument *XML = new TXMLDocument(""); // WICHTIG: kein Datei Namen übergeben, sonst Exception XML->Options = XML->Options << doNodeAutoIndent; XML->Active = true; XML->Encoding = "UTF-16"; // Encoding festlegen, damit auch z.B. Umlauten richtig rüberkommen XML->DocumentElement = XML->CreateElement(L"DW_XML", ""); // Unterknoten mit Namen "DW_REC" erstellen _di_IXMLNode DW_RECNode = XML->DocumentElement->AddChild(L"DW_REC"); // Für DW_REC Unterknoten "plantkey" erstellen _di_IXMLNode plantNode = XML->DocumentElement->AddChild("plantkey"); plantNode->Attributes["Description"]="Werksschlüssel"; plantNode->Attributes["Datatype"]="VARCHAR2"; plantNode->Attributes["Length"]="4"; // XML Dokument in eine Datei abspeichern XML->SaveToFile("c:\\test.xml"); // Instanz Von XML löschen delete XML;
Wäre Klasse wenn mir jemand einen Tip geben könnte.
Difu
-
Hast Du mal versucht anstatt die Eigenschaft Attribute die Methode SetAttribute() zu verwenden?
Außerdem habe ich in meinem Code als zweiten Parameter von AddChild() eine -1 eingefügt. Sollte allerdings auch ohne das funktionieren._di_IXMLNode plantNode = XML->DocumentElement->AddChild("plantkey", -1); plantNode->SetAttribute("Description", "Werksschlüssel"); plantNode->SetAttribute("Datatype", "VARCHAR2"); plantNode->SetAttribute("Length", "4");
Gruß,
Alexander
-
leider war es das auch nicht, gibt es vielleicht noch
Optionen die man einstellen kann ??Gruss
Difu
-
Ich habe mir nochmal meinen Code und die Hilfe zu Attributes (bzw. SetAttribute) angeschaut.
Überall in meinem Code habe ich beim Setzen der Attribute für die Attributwerte entweder Variablen vom Typ AnsiString verwendet oder einen
Cast auf AnsiString vorgenommen. Der Attributwert (also das zweite Argument von SetAttribute()) ist ja vom Typ OleVariant. Könnte sein,
dass hierbei automatisch auf bool konvertiert wird.
Was Du folglich mal probieren könntest, wäre etwas in der Art:plantNode->SetAttribute("Description", String("Werksschlüssel"));
Gruß,
Alexander
-
Super!!
Vielen Dank!
Difu