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).aspx

    Ups 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...


Anmelden zum Antworten