Hej alla glada Ladda in XML filen i ett XML DOM object, sen lägger du till element som du vill: Hej Hmm... vad innehåller file extension? FILEEXTEXTENSION är en sträng typ ".mpg" eller ".avi" eller ".jpg" eller motsvarande. Om jag inte använder mig av if-satsen lopas alla filer igenom och namnet på de läggs till i XML-dokumentet typ:Fylla på ett xmldokument
Jag kör Microsoft.NET
Hur gör jag om jag har ett xmldokument ("Service.xml") där jag för varje anrop att hämta dokument ska bygga om en del av det beroende på hur många filer som ligger i en viss katalog?
Tex
<xml version=... bla bla>
<Huvudnod>
<Statiska_delar>
<Statiskdel></Statiskdel>
<Statiskdel></Statiskdel>
<Statiskdel></Statiskdel>
</Statsiska_delar>
<Dynamiska_delar>
<Dynamiskdel></Dynamiskdel>
<Dynamiskdel></Dynamiskdel>
</Dynamiska_delar>
</Huvudnod>
Här vill jag alltså vid varje anrop ställa mig vid Dynamiska_delar och skriva en ny Dynamiskdel-element och fylla det med information om vilka filer som ligger under en viss katalog?
Tacksam för svar, gärna i C# eller Visual C++
/DanielSv: Fylla på ett xmldokument
<code>
public void AddDynamic(string Data)
{
XmlDocument serviceDOM = new XmlDocument();
serviceDOM.Load("services.xml");
XmlElement dynElement = serviceDOM.GetElementsByTagName("Dynamiska_delar");
XmlElement newDynElement = serviceDOM.CreateElement("Dynamiskdel");
newDynElement.Value = data;
dynElement.AppendChild(newDynElement);
serviceDOM.Save("services.xml");
}
</code>Sv: Fylla på ett xmldokument
Tack för svaret, jag hade faktiskt klurat ut det där med DOM när jag såg att du hade svarat men nu har jag stött på ett annat problem...
Jag skriver i Visual C++ och jag vill lägga in informationen i olika noder beroende på filändelsen. Nu funkar inte nedanstående eftersom if-satsen aldrig blir sann även om FILEEXTENSION är lika med en fil som finns på disken.
Varför blir if-satsen aldrig sann? Några tips?
XmlDocument *doc;
doc = new XmlDocument;
doc->Load("\...\xmldoc.xml");
XmlNode *TopNode = doc->CreateElement("Toppnodnamn");
doc->DocumentElement->AppendChild(TopNode);
// add the files
DirectoryInfo *Dir = new DirectoryInfo(Server->MapPath("/.../files"));
while (i<Dir->GetFiles()->Length)
{
FileInfo *filefound;
filefound = new FileInfo(Dir->GetFiles()->GetValue(i)->ToString());
if (filefound->Extension->ToString() == FILEEXTENSION)
{
XmlNode *FileNode = doc->CreateElement("nodnamn");
XmlNode *TextNode = doc->CreateTextNode(Dir->GetFiles()->GetValue(i)->ToString());
FileNode->AppendChild(TextNode);
TopNode->AppendChild(FileNode);
}
i++;
}Sv: Fylla på ett xmldokument
Är du säker på den kodsnutten för övrigt.
Försöker du inte sätta ett XmlElement lika med en XmlNodeList?
// DanielSv: Fylla på ett xmldokument
lyckas du överhuvudtaget loopa igenom fler filer?Sv: Fylla på ett xmldokument
<FileList>
<File>Nisse.avi</File>
<File>Kalle.jpg</File>
</FileList>
osv.
Även om jag sätter motsvarande
if (filefound->Extension->ToString() == filefound->Extension->ToString())
får jag ingen träff.
// Daniel