Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Работа с xml в VS2010 (http://forum.oszone.net/showthread.php?t=280758)

Elen123321 12-04-2014 14:57 2336762

Работа с xml в VS2010
 
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"


Время: 20:39.

Время: 20:39.
© OSzone.net 2001-