Export do XML

0

Witam

Mam takie zadanie. Niedawno weszła ustawa, która nakazuje tworzenie z programów księgowych i podobnych Jednolitego Pliku Kontrolnego.
Należy wyeksportować dane z bazy do pliku XML, żeby skarbówka mogła sobie to zassać u siebie. Na stronie MF jest schemat pliku itp.
Mam aplikacje, które stworzyłem w Builder c++ - typowe desktopowe bazodanówki. Muszę zrobić takie eksporty do XML.

Mam buildera XE2 pro i buildera c++ 5 pro.
W 5 nie zrobię tego raczej ale XE2 jest na to przygotowany przez XML Data Binding?
Nigdy wcześniej nie miałem okazji ani potrzeby robienia exportu do XML z buildera.
Czy mogę prosić o jakieś wskazówki?
jak się za to zabrać, na co uważać itp?
A może jakieś przykłady?

Będę wdzięczny za sugestie i pomoc

0

Jeśli nie musisz z tego korzystać mam na myśli XML Data Binding to zrób zwyczajnie jako plik tekstowy z gałęziami XML a w miejsce tekstowe wstaw swoje dane i całość zapisz do .xml

0

XML binding w c/c++ to naprawdę czyste zło - męczyłem się z tym ostatnio niemiłosiernie. Ostatecznie binding zrobiłem w pythonie, którego wywoływałem z poziomu Python C Api.

0

Zgodnie z sugestią zabrałem się za tworzenie pliku tekstowego.
Więcej w tym wszystkim dłubaniny niż ambitnej pracy i myślenia.

To jest plik, który jest wzorcem i takie coś muszę wytworzyć w builderze.

http://www.mf.gov.pl/documents/764034/5134536/Schemat_JPK_MAG%281%29_v1-0.xsd

Ale pojawiła się zagadka.
Gdy tworzę taki plik (jeszcze nie mam całego) w builderze to przeglądarki (IE, Firefox) nie otwierają go. Gdy otworzę oryginał w notatniku i zrobię zapisz jako jakas nazwa.xsd to też się to nie otwiera w przeglądarkach. Jak zmieniałem kodowanie przy zapisie to w w niektórych kodowaniach firefox zaczyna to otwierać ale IE żadnego kodowania nie akceptuje (Ansi, UTF8, Unicode).

Czy wiecie dlaczego tak jest z tym plikiem? Jak zapisać i jak stworzyć plik w buildrze, żeby się otwierało?
Czy przy tworzenia pliku tekstowego mogę ustawić kodowanie?
ofstream outfile("c:\export\jpk.xsd", ios::app);

0

Czy ja mam jakieś deja-vu? http://4programmers.net/Forum/1258440

Kiedyś musiałem na szybko tworzyć jakąś pliczek xml'owy. Nie chciało mi się bawić w bardziej zaawansowane rzeczy, a plik był mały. Zapisywałem go w pamięci w TStringList i potem całość zapisywałem do pliku korzystając z metody udostępnianej przez listę. Jako, że pliczek miał kodowanie UTF-8 dodałem jeszcze znacznik BOM na początku:

TStringList *xml;
xml = new TStringList();
/*
.
.
mozolne tworzenie całego pliku
.
.
*/
xml->SaveToFile(File,TEncoding::UTF8);

I to wystarczyło. Wynikowy plik odczytywał się na przeglądarkach czy też programach do edycji plików xml.

A i jeszcze jedno. Musisz pamiętać, że jako dane nie mogą znajdować się pewne znaki. Trzeba je odpowiednio escape'ować. Co prawda tych znaków jest 5, jednak jeśli znajdą się zapisane wprost będą też rozwalać plik. Pierwszy lepszy link z googla http://www.freeformatter.com/xml-escape.html

0
duf napisał(a):

Jeśli nie musisz z tego korzystać mam na myśli XML Data Binding to zrób zwyczajnie jako plik tekstowy z gałęziami XML a w miejsce tekstowe wstaw swoje dane i całość zapisz do .xml

Skoro da się to zrobić w taki sposób to proszę o pomoc ponieważ tak też zrobiłem i lipa. Plik nie otwiera się, nieprawidłowe kodowanie.
Czy mogę prosić o sprecyzowanie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1