A
alexseys
I am trying to rewrite a vbs script in c# that collects data from a pc and writes it into an xml file
I have figured out how to write the file with data in an array. Smple of code below.
But that seems quite inefficient considering I have to collect many many properties for different items
The number of elements will differ from item to item
Does anyone have an idea on how to create a function that will write xml file without explicit knowlege what is inside if an array?
Thank You for your help
alexseys
XmlTextWriter bankWriter = null;
bankWriter = new XmlTextWriter("c:\\test1.xml", null);
bankWriter.Formatting = Formatting.Indented;
bankWriter.Indentation = 6;
bankWriter.Namespaces = false;
bankWriter.WriteStartDocument();
bankWriter.WriteStartElement("computer");
comp.GetDiskDrive();
foreach (Disk disk in comp.disks)
{
bankWriter.WriteStartElement("component");
bankWriter.WriteStartElement("type");
bankWriter.WriteString("Hard Disk");
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("name");
bankWriter.WriteString(disk.caption);
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("attr");
bankWriter.WriteStartElement("name");
bankWriter.WriteString("Manufacturer");
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("value");
bankWriter.WriteString(disk.Manufacturer);
bankWriter.WriteEndElement();
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("attr");
bankWriter.WriteStartElement("name");
bankWriter.WriteString("Size");
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("value");
bankWriter.WriteValue(disk.size);
bankWriter.WriteEndElement();
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("attr");
bankWriter.WriteStartElement("name");
bankWriter.WriteString("Interface");
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("value");
bankWriter.WriteValue(disk.InterfaceType);
bankWriter.WriteEndElement();
bankWriter.WriteEndElement();
bankWriter.WriteEndElement();
}
foreach (Memory memchip in comp.memchips)
{
bankWriter.WriteStartElement("component");
bankWriter.WriteStartElement("type");
bankWriter.WriteString("Physical Memory");
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("name");
bankWriter.WriteString(memchip.Caption);
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("attr");
bankWriter.WriteStartElement("name");
bankWriter.WriteString("PositionInRow");
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("value");
bankWriter.WriteString(memchip.PositionInRow);
bankWriter.WriteEndElement();
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("attr");
bankWriter.WriteStartElement("name");
bankWriter.WriteString("Capacity");
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("value");
bankWriter.WriteValue(memchip.Capacity);
bankWriter.WriteEndElement();
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("attr");
bankWriter.WriteStartElement("name");
bankWriter.WriteString("FormFactor");
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("value");
bankWriter.WriteValue(memchip.FormFactor);
bankWriter.WriteEndElement();
bankWriter.WriteEndElement();
bankWriter.WriteEndElement();
}
bankWriter.WriteEndDocument();
bankWriter.Flush();
I have figured out how to write the file with data in an array. Smple of code below.
But that seems quite inefficient considering I have to collect many many properties for different items
The number of elements will differ from item to item
Does anyone have an idea on how to create a function that will write xml file without explicit knowlege what is inside if an array?
Thank You for your help
alexseys
XmlTextWriter bankWriter = null;
bankWriter = new XmlTextWriter("c:\\test1.xml", null);
bankWriter.Formatting = Formatting.Indented;
bankWriter.Indentation = 6;
bankWriter.Namespaces = false;
bankWriter.WriteStartDocument();
bankWriter.WriteStartElement("computer");
comp.GetDiskDrive();
foreach (Disk disk in comp.disks)
{
bankWriter.WriteStartElement("component");
bankWriter.WriteStartElement("type");
bankWriter.WriteString("Hard Disk");
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("name");
bankWriter.WriteString(disk.caption);
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("attr");
bankWriter.WriteStartElement("name");
bankWriter.WriteString("Manufacturer");
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("value");
bankWriter.WriteString(disk.Manufacturer);
bankWriter.WriteEndElement();
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("attr");
bankWriter.WriteStartElement("name");
bankWriter.WriteString("Size");
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("value");
bankWriter.WriteValue(disk.size);
bankWriter.WriteEndElement();
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("attr");
bankWriter.WriteStartElement("name");
bankWriter.WriteString("Interface");
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("value");
bankWriter.WriteValue(disk.InterfaceType);
bankWriter.WriteEndElement();
bankWriter.WriteEndElement();
bankWriter.WriteEndElement();
}
foreach (Memory memchip in comp.memchips)
{
bankWriter.WriteStartElement("component");
bankWriter.WriteStartElement("type");
bankWriter.WriteString("Physical Memory");
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("name");
bankWriter.WriteString(memchip.Caption);
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("attr");
bankWriter.WriteStartElement("name");
bankWriter.WriteString("PositionInRow");
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("value");
bankWriter.WriteString(memchip.PositionInRow);
bankWriter.WriteEndElement();
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("attr");
bankWriter.WriteStartElement("name");
bankWriter.WriteString("Capacity");
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("value");
bankWriter.WriteValue(memchip.Capacity);
bankWriter.WriteEndElement();
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("attr");
bankWriter.WriteStartElement("name");
bankWriter.WriteString("FormFactor");
bankWriter.WriteEndElement();
bankWriter.WriteStartElement("value");
bankWriter.WriteValue(memchip.FormFactor);
bankWriter.WriteEndElement();
bankWriter.WriteEndElement();
bankWriter.WriteEndElement();
}
bankWriter.WriteEndDocument();
bankWriter.Flush();