Hej!Lägga till element till XML-fil
Jag försöker att lägga till nya noder till en existerande xml-fil (volcanoes.xml). Filen är hämtad från Visual C++.NET (Microsoft Press) likaså koden nedan. Koden är dock modifierad för att fungera med "Forms". Jag har skapat ett ifyllnadsformulär i vilket de olika värdena ska fyllas i och sedan skrivas till xml-filen. Nedan har jag dock skrivit in textsträngarna manuellt, "Mount St.Helens" och "Washington State,USA".
Jag får det till att koden fungerar ända till slutet när skrivningen till filen ska ske, jag vet helt enkelt inte hur syntaxen ska se ut. Vidare så kan erfarna managed C++ programerare säkert hitta diverse dunheter men som sagt, "alla är vi barn i början".
All hjälp tas emot med stor tacksamhet!!
Med vänliga hälsningar
Kennet
---------------------------------------------
//En knapptryckning!
private: System::Void ladda_upp_Click(System::Object * sender, System::EventArgs * e)
{
tomBox(); //Checks for empty textboxes //Kollar efter tomma textrutor
XmlDocument* doc = new XmlDocument();
doc->Load("../volcanoes.xml"); //My xml-file
XmlNode* root = doc->DocumentElement;
XmlNodeList* xnl = doc->ChildNodes;
IEnumerator* ie = xnl->GetEnumerator();
//Looks for nodes
while(ie->MoveNext()==true)
{
//A pointer to the node
XmlNode* pNode = dynamic_cast<XmlNode*>(ie->Current);
//Make's sure right node have been found
if (pNode->NodeType==XmlNodeType::Element && pNode->Name->Equals(S"geology"))
{
//MessageBox::Show(S"The node was found!");
XmlNode* pVolc = dynamic_cast<XmlNode*>(pNode->ChildNodes->Item(1));
//Create a new "vulkan" element
XmlElement* newElement = doc->CreateElement("volcano");
//Give the attribute a name
XmlAttribute* pAtt = doc->CreateAttribute("name");
pAtt->Value = S"Mount St.Helens";
newElement->Attributes->Append(pAtt);
//Create the "geografiskt" node
XmlElement* locElement = doc->CreateElement("location");
XmlText* xt = doc->CreateTextNode(S"Washington State,USA");
locElement->AppendChild(xt);
newElement->AppendChild(locElement);
XmlElement* newVolcano = newElement;
//Put in the new element
pNode->InsertBefore(newVolcano,pVolc);
//TROLIGEN HÄR NEDAN SOM DET SKITER SIG!!..:)
XmlTextWriter* xtw = new XmlTextWriter(Console::Out);
xtw->Formatting = Formatting::Indented;
doc->WriteContentTo(xtw);
xtw->Flush();
Console::WriteLine();
}
}
}