plik xml ?

TU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad rok
  • Postów:62
0

Witam

Mam dwa pliki xml - zawartość taka sama ale jednak różnią się. Jeden z nich otwiera się w przeglądarce a drugi nie.
zapisuję go przez ofstream outfile, ios::app
powiedzcie mi czym różnią się te pliki? i jak zrobić, żeby plik bad zapisać tak samo jak ten ok?

notepad++ pokazuje mi takie same informacje o kodowaniu, o bom itp doszedłem do tego, że gdy w pliku zmienię kodowanie na iso9958-2 a następnie zrobię konwertuj do utf bez bom to zaczyna otwierać się. ALe chciałbym wiedzieć jak zapisać ten plik normalnie czyli z poziomu buildera c++ bez żadnych ręcznych kombinacji w notepad++

Pozdrawiam

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

Wrzuc gdzieś te pliki albo zrób chociaż file plik i zobacz co wypisze, albo pokaż nam hexdump tych plików. Mamy wróżyć z kuli?


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
TU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad rok
  • Postów:62
0

jeszcze załączniki bo zapomniałem o nich
tylko zmieniłem rozszerzenie z xml na txt bo nie chciało mi przyjąć ale sprawdziłem, że po zmianie rozszerzenia jest dalej ten problem.

  • bad.txt (9 KB) - ściągnięć: 307
  • ok.txt (9 KB) - ściągnięć: 322
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

1.xml: XML 1.0 document, UTF-8 Unicode (with BOM) text, with very long lines, with CRLF line terminators
2.xml: XML 1.0 document, ISO-8859 text, with very long lines, with CRLF line terminators

No ewidentnie się różnią ;) To ze w nagłowku w xml masz napisane że UTF-8 to jeszcze o niczym nie świadczy ;]


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 2x, ostatnio: Shalom
TU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad rok
  • Postów:62
0

To błagam o informację jak mam stworzyć ten plik, żeby miał dobry nagłówek?
Ja robię tak w builder c++
ofstream outfile("c:\export\plik.xml", ios::app);
pod ios podstawiałem kolejno wszystkie dostępne opcje czyli in, out, bin itd ale to nic nie daje

Czyli to co jest w pliku bad ma bom a plik dobry nie ma bom?

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Ech. Zacznij czytać tutaj: http://www.joelonsoftware.com/articles/Unicode.html bo chyba niewiele rozumiesz.
Dla zobrazowania sytuacji:
hexdump pierwszego pliku: http://4programmers.net/Pastebin/5759
hexdump drugiego pliku: http://4programmers.net/Pastebin/5760

To są ZUPEŁNIE różne pliki. Dane są kodowane w zupełnie inny sposób!


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 3x, ostatnio: Shalom
TU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad rok
  • Postów:62
0

Niewiele mi to mówi. Że różni się kodowanie to domyśliłem się ale potrzebuję rozwiązania, żeby zapisać to w poprawnym formacie a dokładniej kodowaniu.
Ten zrzut hex to już nic mi nie zobrazował poza tym, że pliki różnią się.

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Musisz zmienić kodowanie tych danych. Znajdź do tego jakąś bibliotekę bo sam c++ czegoś takiego chyba nie ma, a co do bcb to nie wiem.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
0

To chyba powinienem z tym problemem przejść na forum c++

Shalom
mówisz, masz
TU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad rok
  • Postów:62
0

Skoro jestem z tym wątkiem już na c++ to proszę Was bardzo powiedzcie mi jak mam zmienić to nieszczęsne kodowanie?
Jak stworzyć zwykły plik ale o dopowiednim lub żądany kodowaniu, względnie jak mogę przekonwertować plik.
Mowa o builder c++
kiedyś, ktoś napisał, że można przez stringgrid i
xml->SaveToFile("c:\export\plik.xml",TEncoding::UTF8)
ale mój builder nie pozwala w savetofile na żadne inne parametry poza ścieżką do pliku.

GI
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 5 lat
  • Postów:35
0

To może napisz której wersji Buildera używasz... i jakiego typu jest ten obiekt "xml" na którym wykonujesz SaveToFile. A ogólnie, jaka jest wejściowa postać danych, które chcesz zapisać do pliku? W jakim obiekcie/zmiennej jakiego typu/ewentualnie jak zakodowane je otrzymujesz?

TU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad rok
  • Postów:62
0

To może napisz której wersji Buildera używasz... i jakiego typu jest ten obiekt "xml" na którym wykonujesz SaveToFile. A ogólnie, jaka jest wejściowa postać danych, które chcesz zapisać do pliku? W jakim obiekcie/zmiennej jakiego typu/ewentualnie jak zakodowane je otrzymujesz?

Używam Buider 5 pro
a cała reszta jest opisana w poprzednich postach, włącznie z plikami xml

TU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad rok
  • Postów:62
0

Na prawdę nikt nie wie jak to zrobić?
To powiedzcie mi może, w jaki sposób stworzyć i wypełnić danymi plik xml? w builderze 5

xfin
  • Rejestracja:ponad 11 lat
  • Ostatnio:9 miesięcy
  • Lokalizacja:Genewa
  • Postów:597
0
tuz napisał(a):

Na prawdę nikt nie wie jak to zrobić?
To powiedzcie mi może, w jaki sposób stworzyć i wypełnić danymi plik xml? w builderze 5

No ale już zostało napisane - musisz użyć jakiegoś zewnętrznego API, żeby ustawić kodowanie.
Używając Qt wyglądałoby to tak:

Kopiuj
QFile file(path);
file.open(QIODevice::WriteOnly | QIODevice::Text);
QTextStream output(&file);
output.setCodec("UTF-8");

Jak nie chcesz Qt, a piszesz pod windą, to zostaje używania WinAPI.

tuz napisał(a):

To powiedzcie mi może, w jaki sposób stworzyć i wypełnić danymi plik xml? w builderze 5

Tutaj polecam poczytać:

http://www.functionx.com/cppbuilder/xml/Lesson01.htm

i również ogarnąć takie coś jak XML DOM. C++ samo w sobie nie ma mechanizmów do parsowania XML - ale są zewnętrzne api, biblioteki. Możliwe jest nawet używanie bindingu (xml -> klasy cpp ->xml).

TU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad rok
  • Postów:62
0

No dobrze, ale żeby użyć TXML... muszę przejść na wyższą wersję buildera. Ktoś mądry (na tym forum) wpuścił mnie w maliny, bo chciałem posłużyć się gotowym komponentem i na tym robić plik xml a napisał, że szkoda czasu, że to niewdzięczny komponent i lepiej zrobić zwykły plik tekstowy. Możliwe, że pomimo swojej wielkiej wiedzy nie miał doświadczenia.

Tak na szybko to wymyśliłem coś takiego. To bardzo łopatologicznie ale na szybko nie mam lepszego pomysłu. Mam dobry plik, mogę go otworzyć i usunąć wszystko z niego a wstawić to co chcę, jest szansa, że zachowa niezmienione, dobre kodowanie. Ktoś coś wie? czy można jakoś szybko wyczyścić zawartość pliku, który otworzę?

Pozdrawiam

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Nie nie nie, to tak nie działa. Zrozum że "kodowanie" nie jest związane z plikiem jako takim tylko z danymi które w nim są. Czemu nie przeczytałeś artykułu który ci podlinkowałem? Jak wpakujesz do pliku kilka bajtów to NIE WIADOMO jak je odczytać i tylko informacja o typie danych i kodowaniu pozwala uzyskać sensowne wyniki. Ale równie dobrze te dane można zinterpretować zupełnie inaczej.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.