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:prawie 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ęć: 305
  • ok.txt (9 KB) - ściągnięć: 318
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 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:prawie 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:prawie 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:ponad 8 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:8 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:prawie 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ś!"
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)