CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - XMLDocument1 tworzenie dokumentu XML

XMLDocument1 tworzenie dokumentu XML

dział ogólny

XMLDocument1 tworzenie dokumentu XML

Nowy postprzez Darek_C++ » sobota, 20 listopada 2010, 19:36

Osadziłem komponent XMLDocument1 na formularzu odczytać dokument XML mogę, ale nie wiem jak go utworzyć z poziomu programu i tego komponentu znalazłem artykuł o tym http://flylib.com/books/en/3.264.1.113/1/ kod testowy:

KOD cpp:     UKRYJ  
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
        XMLDocument1->Active = true;
        _di_IXMLNode Chapter = XMLDocument1->DocumentElement;
        Chapter->AddChild("Section"); // Tutaj wyjątek
        _di_IXMLNode NewSection = Chapter->ChildNodes->GetNode(Chapter->ChildNodes->Count-1);
        NewSection->SetAttribute("Title", (AnsiString)"New Section Title");
        NewSection->AddChild("Components");
        NewSection->AddChild("Wizards");
        AnsiString XML;
        XMLDocument1->SaveToXML(XML);
        ShowMessage(XML);
}


Uruchomienie tego kodu zgłasza wyjątek:


"First chance exception at $7C812AFB. Exception class EAccessViolation with message 'Access violation at address 00402A1B in module 'Project1.exe'. Read of address 00000000'. Process Project1.exe (3956)".



Pytanie brzmi jak prawidłowo utworzyć przykładowo taki prosty dokument XML

KOD mysql:     UKRYJ  
<?xml version="1.0" ?>
<document>
        <title>Tytuł..</title>
        <description>Opis..</description>      
        <description>Opis..</description>
        <keywords>Słowa kluczowe.. Test ąęśćn</keywords>
</document>
I wypełnić go danymi?
Ostatnio edytowano sobota, 20 listopada 2010, 20:02 przez Darek_C++, łącznie edytowano 1 raz
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: XMLDocument1 tworzenie dokumentu XML

Nowy postprzez Cyfrowy Baron » sobota, 20 listopada 2010, 19:46

Zapoznaj się z tym wątkiem: Problem z Plikiem XML
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: XMLDocument1 tworzenie dokumentu XML

Nowy postprzez Darek_C++ » sobota, 20 listopada 2010, 19:59

Metoda ma taki prototyp:
KOD cpp:     UKRYJ  
 void __fastcall SaveToXML(WideString &XML)/* overload */;

czyli ma umieścić dane w zmiennej XML . Wiec jest prawidłowa.
Wyjątek zgłaszany jest znacznie wyżej.
----
W tej chwili do tworzenie pliku XML korzystam właśnie z TinyXML. Ale chciał bym się mimo wszystko dowiedzieć jak to się robi przy użyciu komponenty XMLDocument1 ;)
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: XMLDocument1 tworzenie dokumentu XML

Nowy postprzez Cyfrowy Baron » sobota, 20 listopada 2010, 20:19

Zorientowałem się, więc usunąłem swój ostatni post.

Na XMLDocument nie znam się wogóle, więc nie pomogę, ale co do przykąłdowego kodu, to powinno wyglądać tak:

KOD cpp:     UKRYJ  
 XMLDocument1->Active = true;
 XMLDocument1->AddChild("Sekcja");

 _di_IXMLNode NewSection =
      XMLDocument1->ChildNodes->GetNode(XMLDocument1->ChildNodes->Count - 1);

 NewSection->SetAttribute("Title", "New Section Title");
 NewSection->AddChild("Components");
 NewSection->AddChild("Wizards");
 XMLDocument1->SaveToFile("c:\\file.xml");
 String XML;
 XMLDocument1->SaveToXML(XML);
 ShowMessage(XML);

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Darek_C++
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: XMLDocument1 tworzenie dokumentu XML

Nowy postprzez Darek_C++ » sobota, 20 listopada 2010, 20:26

Z zapisem do pliku XML poradziłem sobie takim kodem:
KOD cpp:     UKRYJ  
void __fastcall TForm1::Button4Click(TObject *Sender)
{

        try
        {
                _di_IXMLNode NewNode;
                _di_IXMLNode operationsStatementNode;
                _di_IXMLNode ValueNode;

                Parser->Active = false;
                Parser->XML->Clear();
                Parser->XML->Add("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
                Parser->XML->Add("<operationsSt></operationsSt>");
                Parser->Active = true;

                operationsStatementNode = Parser->ChildNodes->FindNode("operationsSt");

                NewNode = operationsStatementNode;

                ValueNode = NewNode->AddChild(WideString("format"));
                ValueNode->Text = WideString("2.2");

                ValueNode = NewNode->AddChild(WideString("Name"));
                ValueNode->Text = WideString("Test..");

                ValueNode = NewNode->AddChild(WideString("ID"));
                ValueNode->Text = WideString("Test 2..");

                ValueNode = NewNode->AddChild(WideString("TytulWpisu"));
                ValueNode->Text = WideString(Memo1->Text);

                Parser->SaveToFile("test.xml");
        }
        catch(Exception &e)
        {
                ShowMessage(e.Message);
                return;
        }
}
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox


Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 2 gości