xml attribute
-
Hi Leute
Ich hab hier nen Xml gebastelt.Das Problem ist das er alles in eine Zeile schreibt.Wie bekomme ich es hin das er ein Zeilenumbruch macht?
also quasi so:
<cfg>
genre=""
</cfg>er schreibt es nämlich so:
<cfg genre="" />Code: if(saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) { XmlDocument ^doc = gcnew XmlDocument(); XmlElement ^body = doc->CreateElement("cfg"); doc->AppendChild( body ); XmlAttribute^ attr; attr = doc->CreateAttribute("genre"); attr->Value = this->tabPage1->Text; doc->DocumentElement->SetAttributeNode( attr ); doc->Save(saveFileDialog1->FileName); }So das problem ist das der alles in eine Zeile schreibt.
-
[quote="theplake"]Hi Leute
Ich hab hier nen Xml gebastelt.Das Problem ist das er alles in eine Zeile schreibt.Wie bekomme ich es hin das er ein Zeilenumbruch macht?
also quasi so:
<cfg>
genre=""
</cfg>er schreibt es nämlich so:
<cfg genre="" />
Naja... das sind aber zwei vollkommen verschiedene XML-Dokumente... Du hast Dich da vermutlich verschrieben, oder?Ansonsten siehe
System.Xml.XmlTextWriter und Formatting.Indented
Siehe auch:
http://msdn2.microsoft.com/en-us/library/4d1k42hb(vs.71).aspx
-
[quote="Jochen Kalmbach"]
theplake schrieb:
Hi Leute
Ich hab hier nen Xml gebastelt.Das Problem ist das er alles in eine Zeile schreibt.Wie bekomme ich es hin das er ein Zeilenumbruch macht?
also quasi so:
<cfg>
genre=""
</cfg>er schreibt es nämlich so:
<cfg genre="" />
Naja... das sind aber zwei vollkommen verschiedene XML-Dokumente... Du hast Dich da vermutlich verschrieben, oder?Ansonsten siehe
System.Xml.XmlTextWriter und Formatting.Indented
Siehe auch:
http://msdn2.microsoft.com/en-us/library/4d1k42hb(vs.71).aspxUps ja so schreibt er es in die Datei: <cfg genre="" /cfg>
also eine Zeile. wenn ich ein \n einfügen will meckert er.
-
Kannst Du nochmals schreiben *wie* Du es haben willst?
Du kannst natürlich jederzeit ein "Text"-Element einfügen! Damit kannst Du zu 100% festlegen wie die XML-Datei aussehen soll...PS: Warum willst Du das eigentlich?
-
Ich möchte es gerne so haben :
<cfg>
genre=""
</cfg>
-
Das zwischen <cfg> und </cfg> hat aber mit einem XML-Attribut *nix*, aber auch gar nix zu tun!!!!
Wenn Du es wirklich so haben willst, dann füge einach einen Text hinzu mit "\r\n\r\ngenre=\"\"\r\n\r\n", dann hast Du genau das was Du haben willst...
Also sozusagen:body->InnerText = "\r\n\r\ngenre=\"\"\r\n\r\n"
-
Ich hab das jetzt so gelöast.
Nur wie lese ich jetzt die einzelnen Values aus?XmlTextWriter ^writer = gcnew XmlTextWriter (saveFileDialog1->FileName, System::Text::Encoding::Unicode); //Use automatic indentation for readability. // writer->Formatting = Formatting->Indented; //Write the root element writer->WriteStartElement("CFG"); //Start an element writer->WriteStartElement("TabPage"); //Add an attribute to the previously created element String ^balue = this->tabPage1->Name; String ^balue2 = this->tabPage1->Text; writer->WriteAttributeString("TabPageName", balue); writer->WriteEndElement(); writer->WriteStartElement("TabPage"); writer->WriteAttributeString("TabPageText", balue2); //add sub-elements // writer->WriteElementString("title", "The Matrix"); //writer->WriteElementString("format", "DVD"); //End the item element writer->WriteEndElement(); // end item //Write some white space between nodes writer->WriteWhitespace("\n"); // end the root element writer->WriteFullEndElement(); //Write the XML to file and close the writer writer->Close(); }
-
Kannst Du nicht mal bei einem Problem bleiben und nicht immer neue Dinge bringen?
Lesen tut man XML i.d.R. mit XmlDocument.
Auch würde ich den XmlTextWriter nie ohne XmlDocument verwenden, da dies einfach zu viel Aufwand ist...