PDA

Показать полную графическую версию : Работа с xml в VS2010


Elen123321
12-04-2014, 14:57
fileCards.xml
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Card>
<ID>00001</ID>
<PIN>1111</PIN>
<Balance>4500000</Balance>
</Card>
<Card>
<ID>00002</ID>
<PIN>2222</PIN>
<Balance>6200000</Balance>
</Card>
<Card>
<ID>00005</ID>
<PIN>5555</PIN>
<Balance>7850000</Balance>
</Card>
</NewDataSet>

создаю и отображаю файл xml в dataGridView в Form2.h


Form2.h
...
DataTable ^ Cards_Table;
DataSet ^ DataSetCards;
private: System::Void Form2_Load(System::Object^ sender, System::EventArgs^ e) {
Cards_Table = gcnew DataTable();
DataSetCards = gcnew DataSet();
if (IO::File::Exists("file.xml") == false) { //создать, если нет файла
dataGridView1->DataSource = Cards_Table;
Cards_Table->Columns->Add("ID");
Cards_Table->Columns->Add("PIN");
Cards_Table->Columns->Add("Balance");
DataSetCards->Tables->Add(Cards_Table);
}
else { // отобразить и дополнить
DataSetCards->ReadXml("fileCards.xml");
String ^ СтрокаXML = DataSetCards->GetXml();
dataGridView1->DataMember = ("Card");
dataGridView1->DataSource = DataSetCards;
}
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { // сохранить в файл
Cards_Table->TableName = "Card";
DataSetCards->WriteXml("file.xml");
this->Close();
}
а в Form1.h я хочу загрузить в comboBox значениями по тегу "ID" из xml. Попытка адаптировать того, что в этой теме http://forum.oszone.net/thread-226848.html под vs2010,CLR

Form1.h
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {

XmlDocument^ xmldoc = gcnew XmlDocument();
xmldoc->Load("fileCards.xml");
XmlNodeList^ listCard = xmldoc->GetElementsByTagName("Card");
int kol = listCard->Count;
array <XmlElement^>^ ID = gcnew array <XmlElement^>(kol); //создание массива в vs
//ID[kol] = gcnew XmlElement();
for(int i = 0; i < kol; i++){
//ID[i] = (XmlElement) xmldoc->GetElementsById("ID")[i]; //вариант 1
// ID[i] = (XmlElement)(xmldoc["ID"]->InnerText)[i]; //вариант 2
}
/* for(int i = 0; i < kol; i++){
comboBox->Items->Add(ID[i]->InnerText);
}*/
}

Ошибки в первом случае:
Ошибка 1 error C2664: System::Xml::XmlElement ^System::Xml::XmlNode::default::get(System::String ^): невозможно преобразовать параметр 1 из "int" в "System::String ^"
Ошибка 2 error C2661: System::Xml::XmlNode::default::get: нет перегруженной функции, принимающей 0 аргументов
Ошибка 3 error C2664: System::Xml::XmlElement ^System::Xml::XmlNode::default::get(System::String ^): невозможно преобразовать параметр 1 из "int" в "System::String ^"
Ошибка 4 error C2661: System::Xml::XmlNode::default::get: нет перегруженной функции, принимающей 0 аргументов

Во втором:
Ошибка 1 error C2440: приведение типов: невозможно преобразовать "wchar_t" в "System::Xml::XmlElement"
Ошибка 2 error C2440: приведение типов: невозможно преобразовать "wchar_t" в "System::Xml::XmlElement"




© OSzone.net 2001-2012